
1. 数据库安装
1.1 mysql安装
1.1.1 安装mysqld
PS :分别在docloud008和docloud012上按照以下步骤安装mysqld
配置mysql yum源并安装
yum install http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm -y安装mysql
yum install mysql-community-server -y启动mysql
systemctl start mysqld && systemctl enable mysqld修改mysql密码
#获取默认密码 sudo grep 'temporary password' /var/log/mysqld.log # 登陆mysql mysql -uroot -p #修改mysql密码 set password for 'root'@'localhost'=password('MyNewPass4!'); # 修改远程登录密码 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root用户的密码' WITH GRANT OPTION; # 刷新 flush privileges;配置mysql的配置文件
#停止mysql服务 systemctl stop mysqld # 修改配置文件 vim /etc/my.cnf [mysqld] port=3308 #设置UTF-8编码 character_set_server=utf8 init_connect='SET NAMES utf8' #datadir=/var/lib/mysql #修改数据存储目录 datadir=/hdata/mysql_data/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted #security risks symbolic-links=0 #修改日志存储目录 log-error=/hdata/mysql_data/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid #开启binlog #binlog日志,即binary log,是二进制日志文件。它有两个作用,一是增量备份,#即只备份新增的内容;二是用于主从复制等,即主节点维护了一个binlog日志文#件,从节点从binlog中同步数据。 #当数据被误操作删除时,我们可以通过binlog日志恢复数据。 server-id=1 # 注意,集群没唯一id,master01为1,master02为2 log-bin=/hdata/mysql_data/binlog/bin-log #修改最大写入包 max_allowed_packet=10485760 #最大连接数 max_connections=1000 #设置默认时区 default-time-zone = '+08:00'将/var/lib/mysql拷贝到/hdata/mysql_data
cd /var/lib sudo cp -r mysql /hdata/mysql_data/创建存储目录
mkdir -pv /hdata/mysql_data/{log,binlog}修改mysql数据目录和日志目录文件夹属性
sudo chown -R mysql:mysql /hdata/mysql_data重启mysql
systemctl start mysqld
1.1.2 创建mysql主主复制
在master01上增加以下配置
[root@docloud008 ~]# vim /etc/my.cnf # 主主复制配置 binlog_format = mixed relay-log = relay-bin relay-log-index = slave-relay-bin.index auto-increment-increment = 2 auto-increment-offset = 1在master02上增加以下配置
[root@docloud012 ~]# vim /etc/my.cnf # 主主复制配置 binlog_format = mixed relay-log = relay-bin relay-log-index = slave-relay-bin.index auto-increment-increment = 2 auto-increment-offset = 2分别重启master01和master02的mysqld服务
# master01 [root@docloud006 ~]# systemctl restart mysqld # master02 [root@docloud012 ~]# systemctl restart mysqld在master01上创建同步账户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'rep'@'172.20.0.44' IDENTIFIED BY '1qaz@WSX';在master01上查看binlog状态信息
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 154 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)在master02上将master01设置为主服务器并开启slave
mysql> CHANGE MASTER TO -> MASTER_HOST='172.20.0.44', -> MASTER_USER='rep', -> MASTER_PASSWORD='1qaz@WSX', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=154; Query OK, 0 rows affected, 2 warnings (0.00 sec) mysql> start slave; Query OK, 0 rows affected (0.00 sec)- 查看同步状态,都为yes为成功

Slave_IO_Running和Slave_SQL_Running这两个值必须为Yes,代表从服务器能正常连接服务器
在master02上创建授权账户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'rep'@'172.20.0.41' IDENTIFIED BY '1qaz@WSX'在master02上查看binlog状态
mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000001 | 154 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)在master01上设置master02为主服务器并开启slave
mysql> CHANGE MASTER TO -> MASTER_HOST='172.20.0.41', -> MASTER_USER='rep', -> MASTER_PASSWORD='1qaz@WSX', -> MASTER_PORT=3306, -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=154; Query OK, 0 rows affected, 2 warnings (0.00 sec) mysql> start slave; Query OK, 0 rows affected (0.00 sec)- 查看同步状态

1.1.3 安装keepalived
在master01上安装
$ yum install keepalived -y # 修改配置文件 $ vim /etc/keepalived/keepalived.conf global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr # vrrp_strict # 关闭组播 vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_2 { state BACKUP # 服务状态;MASTER(工作状态)BACKUP(备用状态) interface eth0 # VIP绑定网卡 virtual_router_id 52 # 虚拟路由ID,主、备节点必须一致 mcast_src_ip 172.20.0.41 # 本机IP priority 100 # 优先级;取值范围:0~254;MASTER > BACKUP advert_int 1 # 组播信息发送间隔,主、备节点必须一致,默认1s nopreempt # 开启非抢占模式 unicast_src_ip 172.20.0.41 # 单播源地址 unicast_peer { 172.20.0.44 # 单播目的地址 } authentication { # 验证信息;主、备节点必须一致 auth_type PASS # VRRP验证类型,PASS、AH两种 auth_pass 1111 # VRRP验证密码,在同一个vrrp_instance下,主、从必须使用相同的密码才能正常通信 } virtual_ipaddress { # 虚拟IP池,主、备节点必须一致,可以定义多个VIP 172.20.0.102 # 虚拟IP } }在master02上安装keepalived
$ yum install keepalived -y # 修改配置文件 $ vim /etc/keepalived/keepalived.conf global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr # vrrp_strict # 关闭组播 vrrp_garp_interval 0 vrrp_gna_interval 0 } vrrp_instance VI_2 { state BACKUP # 服务状态;MASTER(工作状态)BACKUP(备用状态) interface eth0 # VIP绑定网卡 virtual_router_id 52 # 虚拟路由ID,主、备节点必须一致 mcast_src_ip 172.20.0.44 # 本机IP priority 100 # 优先级;取值范围:0~254;MASTER > BACKUP advert_int 1 # 组播信息发送间隔,主、备节点必须一致,默认1s nopreempt # 开启非抢占模式 unicast_src_ip 172.20.0.44 # 单播源地址 unicast_peer { 172.20.0.41 # 单播目的地址 } authentication { # 验证信息;主、备节点必须一致 auth_type PASS # VRRP验证类型,PASS、AH两种 auth_pass 1111 # VRRP验证密码,在同一个vrrp_instance下,主、从必须使用相同的密码才能正常通信 } virtual_ipaddress { # 虚拟IP池,主、备节点必须一致,可以定义多个VIP 172.20.0.102 # 虚拟IP } }分别重启master01和master02的keepalived
systemctl restart keepalived # 查看ip,会显示172.20.0.102的ip地址 ip a