Mysql-双主复制和keepalived
环境
1 | test1 192.168.8.201 centos7 mysql5.7 |
mysql安装配置
1 | ## 安装xtrabackup |
1号机开启binlog
1 | vi /etc/my.cnf |
1号机开启脚本,不停插入数据
1 | #创建测试表 |
1号机全量备份,设置备份用户
1 | GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT,PROCESS,SUPER ON *.* TO 'bkpuser'@'localhost' IDENTIFIED BY '2014Picc!!!'; |
全量备份
1 | xtrabackup --defaults-file=/etc/my.cnf --host=localhost --port=3306 --user=bkpuser --password=2014Picc!!! --target-dir=/mysqlbackup/ --backup |
从1号机拷贝数据导2号机
1 | scp -r 2019-08-26_15-43-26 192.168.8.202:/backup |
2号机停止mysql
1 | service mysql stop |
2号机清空mysqldata文件件
1 | rm -rf /mysqldata/* |
2号机查看备份的日志信息(同步时用到)
1 | innobackupex --apply-log /backup/2019-08-26_16-37-20 |
2号机恢复备份
1 | innobackupex --defaults-file=/etc/my.cnf --use-memory=1G --copy-back /backup/2019-08-26_16-37-20 |
恢复后更改属主
1 | chown -R mysql:mysql /mysqldata |
2号机开启binlog
1 | log-bin=mysql-bin |
重启
1 | service mysql restart |
查看表情况
1 | mysql> select max(id) from moni; |
1号机创建复制用户
1 | GRANT REPLICATION SLAVE ON *.* TO 'repuser'@'192.168.8.%' IDENTIFIED BY '2014Picc!!!'; |
2号机开启slave
1 | change master to master_host='192.168.8.201', master_user='repuser', master_password='2014Picc!!!', master_log_file='mysql-bin.000003', master_log_pos=15398; |
停掉插入脚本,对比两边数据状态
1 | ps -ef |grep aa.sh |grep -v grep |awk '{print $2}'|xargs kill -9 |
同理,创建2号机到1号机的复制,2号机创建复制用户
1 | GRANT REPLICATION SLAVE ON *.* TO 'repuser'@'192.168.8.%' IDENTIFIED BY '2014Picc'; |
查看2号机日志状态
1 | show master status; |
1号机开启slave,并查看状态
1 | change master to master_host='192.168.8.202', master_user='repuser', master_password='2014Picc', master_log_file='mysql-bin.000001', master_log_pos=434; |
2号机开启插入脚本
1 | [root@mysql1 mysqlbackup]# cat /bb.sh |
停止1、2号机上的脚本
1 | ps -ef |grep aa.sh |grep -v grep |awk '{print $2}'|xargs kill -9 |
对比数据状态,数据一致
1 | mysql> select host,count(1) from moni group by host; |
keepalived配置
安装(1,2号机)
1 | rpm -ivh keepalived-1.2.13-5.el6_6.x86_64.rpm |
1号机配置
1 | [root@mysql1 haproxy15_keepalived12_el6_rpm]# cat /etc/keepalived/keepalived.conf |
2号机配置
1 | [root@mysql2 ~]# cat /etc/keepalived/keepalived.conf |
1,2号机配置脚本
1 | [root@mysql2 ~]# cat /root/check_mysql.sh |
1,2号机启动keepalived
1 | service keepalived start |
测试,用vip连接数据库,查看实例id
1 | mysql -h 192.168.8.199 -u root -p |
关掉1号机mysql
1 | service mysql stop |
重新登录查询,已成功切换
1 | mysql -h 192.168.8.199 -u root -p |
重启1号机mysql、keepalived
1 | [root@mysql1 haproxy15_keepalived12_el6_rpm]# service mysql start |
再次登录查询,已成功回切
1 | mysql -h 192.168.8.199 -u root -p |