CentOS6.4 mysql5.7 双机热备份

时间:2022-06-01 21:32:32

主机1:192.168.17.129

主机2:192.168.17.130


分别在二台主机上安装 mysql 5.7.16


切换到主机1:

创建热备用户

mysql -uroot -p123456

mysql> create user backup identified by '123456';

mysql> grant all on *.* to backup;

mysql> create database test default character set utf8 collate utf8_general_ci;


关闭 mysql 服务 service mysqld stop;

编辑 my.cnf

vi /etc/my.cnf


server_id=1                   --#设置服务器id,为1表示主服务器

log_bin=mysql-bin      -- #启动MySQ二进制日志系统

binlog_format=row      --#日志类型 row , mixed

expire_logs_days = 7  --//binlog过期清理时间

binlog-do-db=test        --#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行

binlog-ignore-db=mysql    --#不同步mysql系统数据库


重启 mysql 

mysql -uroot -p123456

mysql> show master status;  -- 查看主服务器

+----------------------+-----------+------------------+------------------+

| File        | Position | Binlog_Do_DB |  Binlog_Ignore_DB |

+----------------------+-----------+-------------------+------------------+

| mysql-bin.000013 |    1150 | test  | mysql    |

+-----------------------+----------+------------------+------------------+

1 row in set (0.00 sec)

结果表示现在写日志的文件是mysql-bin.000013,位置是1105,slave端要从这个点开始同步备份test



切换到主机2:

vi /etc/my.cnf                                      #编辑配置文件,在[mysqld]部分添加下面内容
server_id=2                                       #配置文件中已经有一行server_id=1,修改其值为2,表示为从数据库
log_bin=mysql-bin                           #启动MySQ二进制日志系统

binlog_format=row                          #日志类型 row , mixed

replicate-do-db=test                        #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
replicate-ignore-db=mysql             #不同步mysql系统数据库

service mysqld restart   #重启MySQ

注意:MySQL 5.1.7版本之后,已经不支持把master配置属性写入my.cnf配置文件中了,只需要把同步的数据库和要忽略的数据库写入即可。
mysql  -u root -p  #进入MySQL控制台
stop slave;   #停止slave同步进程
change master to master_host='192.168.17.130',master_user='backup',master_password='123456',master_log_file='mysql-bin.000013' ,master_log_pos=1150;    #执行同步语句
start slave;    #开启slave同步进程
SHOW SLAVE STATUS \G;   #查看slave同步信息


注意查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上这两个参数的值为Yes,即说明配置成功!


参阅:http://www.cnblogs.com/sanduzxcvbnm/p/6022149.html



主机直接宕机

1> 在备机上执行STOP SLAVE 和 RESET MASTER

2> 查看show slave status \G;

3> 然后修改应用的连接地址。


正常切换:

1)从服务器检查SHOW PROCESSLIST语句的输出,直到你看到Has read all relaylogwaiting for the slave I/O thread to update it

2)确保从服务器已经处理了日志中的所有语句。 

mysql> STOP SLAVE IO_THREAD 当从服务器都执行完这些,它们可以被重新配置为一个新的设置。

3)在被提升为主服务器的从服务器上,发出 STOP SLAVE和RESET MASTER和RESET SLAVE操作。

4)然后重启mysql服务。

5)在备用服务器(新的主服务器)

创建用户

create user backup01 identified by '123456';  -- 不能与主服务上mysql用户同名

grant all on *.* to backup01;

6) 在主服务器上RESET MASTER。然后CHANGE MASTER TOMASTER_HOST='192.168.17.129',MASTER_USER='backup01',MASTER_PASSWORD='123456' ,master_log_file='master-bin.000015',master_log_pos=1105;

7)查看状态 show slave status \G;

Show master status \G;

如果还不行再次重启主库,并在备库上执行CHANGE MASTER TOMASTER_HOST='192.168.17.129',MASTER_USER='backup',MASTER_PASSWORD='123456',master_log_file='',master_log_pos=1105;