【MySQL】MySQL数据库主主备份

序:

  由于公司内部服务器使用的是普通PC机,所有发生宕机的情况比较多。尤其是发生过几次灾难后整机需要重新安装系统,导致此系统上的MySQL数据无法使用。所以再经过此次问题后搭建了MySQL主主备份。

 

0x01:环境

  环境:MySQL(5.7)

  系统:Windows 10(192.168.1.9,以下简称9)、Window Server 2012(192.168.1.126,以下简称126)

  库名:test_sync

 

0x02:主从同步

  先配置主从热备。以126为主机,9为备机。

  首先需要将126的数据同步到9备机中,然后配置log进行数据的热备。

  1、将126同步的数据库加锁,防止同步数据期间发生新的变更

>mysql -h192.168.1.126 -uroot -proot
>use test_sync;
>flush tables with read lock;

  2、通过mysqldump导出数据

mysqldump -uroot -proot test_sync >test_sync.sql

  3、解锁数据库

>unlock tables;

  4、将期初数据导入9备机

>use test_sync;
>source test_sync.sql

  5、修改126 my.ini文件,配置主从同步  

#开启二进制日志
log-bin=mysql-bin
#设置主机编号
server-id=1
#不同步的数据库
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
#需要同步的数据库
binlog-do-db=test_sync

  6、配置9 my.ini文件,配置主从同步

log-bin=mysql-bin
server-id=2
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql

replicate-do-db=test_sync

log-slave-updates=YES

relay-log=relay-log

  保存后重启MySQL服务,查看126日记记录。


>SHOW MASTER STATUS\G

  

  6、在主服务器中创建用于同步数据的账号

>grant replication slave on *.* to 'repluser'@'192.168.1.9' identified by 'repluse';

  7、备机配置主从同步

>change master to
    master_host='192.168.1.126',
    master_user='repluser',
    master_password='repluser',
    master_log_file='mysql-bin.000003',
    master_log_pos=1654;

  配置后重启服务,查看同步的状态。

>show slave status\G

  

  如果Slave_IO_Running、Slave_SQL_Running均为Yes的话则配置成功,可以进行数据同步测试了。

  

 0x03:主主同步

  主主同步与主从同步配置大致相同,只是将上述的主机变为备机,备机变为主机。

  1、在9上创建同步的账号  

>grant replication slave on *.* to 'repluser'@'192.168.1.126' identified by 'repluse';

  2、修改126配置文件

replicate-do-db=test_sync
relay-log=relay-log
log-slave-updates=YES

  3、查看9备机的二进制日志文件

show master status\G

  4、开启同步

>change master to
    master_host='192.168.1.126',
    master_user='repluser',
    master_password='repluser',
    master_log_file='mysql-bin.000003',
    master_log_pos=1654;

  重启MySQL服务即可。下图中127.0.0.1就是9号机器。

  

0x04:跳过异常

  由于同步过程中出现异常Slave将自动中断,则可以选择跳过指定错误。

    

STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;

 

posted @ 2018-11-23 11:28  MangoCai  阅读(418)  评论(0编辑  收藏  举报