MySQL数据库冗余同步方法

175 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情。 假设A服务器和B服务器,均部署mysql数据并进行实时同步

1、创建同步用户

A服务器 在主/备服务器上创建同步用户: //登录mysql //在A服务器上增加一个B服务器可以登录的帐号,使用mysql终端输入:(注意tongbu是用于同步的帐号,hisense是tongbu的密码,实际中可按需自行设置) mysql -u root -p123456 mysql>flush privileges; mysql>GRANT ALL PRIVILEGES ON . TO 'tongbu'@'10.16.221.77' IDENTIFIED BY 'hisense'; mysql>flush privileges;

B服务器: //登录mysql //在B服务器上增加一个A服务器可以登录的帐号,使用mysql终端输入:(注意tongbu是用于同步的帐号,hisense是tongbu的密码,实际中可按需自行设置) mysql -u root -p123456 mysql>flush privileges; mysql>GRANT ALL PRIVILEGES ON . TO 'tongbu'@'10.16.221.78' IDENTIFIED BY 'hisense'; mysql>flush privileges;

2、修改配置文件 /etc/my.conf

2.1 A服务器的配置 /etc/my.conf

#同步配置 skip-name-resolve #必须与其他服务器不同,且必须为1到232–1之间的一个正整数值 server-id=1 #二进制文件 log-bin=mysql-bin #要同步的数据库 binlog-do-db=tongbu //自己测试用的数据库 这个库要存在 测试成功后要改为真正项目使用的库 slave-skip-errors=1032,1062

2.2 B服务器的配置 /etc/my.conf

#同步配置 skip-name-resolve #必须与其他服务器不同,且必须为1到232–1之间的一个正整数值 server-id=2 #二进制文件 log-bin=mysql-bin #要同步的数据库 binlog-do-db=tongbu //自己测试用的数据库 这个库要存在 测试成功后要改为真正项目使用的库 slave-skip-errors=1032,1062

2.3、重启验证生效

修改完之后重启mysql

启动停止命令

service mysqld stop //停止

service mysqld start //启动

//查看B服务器mysql的mysql库中user表

MySQL>use mysql;

MySQL>select user,host from user;

//此时出现了配置好的登陆账号

3、指定主/备服务器同步信息

在A服务器上查看当前二进制日志名和偏移量值: MySQL> show master status; //记下 File下的值 (mysql-bin.000001) Position的值(120)

在B服务器上指定更新点(根据上面样例修改MASTER_LOG_FILE值为样例结果中File的值;修改MASTER_LOG_POS值为样例结果中Position的值) MySQL> stop slave; MySQL> change master to master_host='10.18.224.79', master_port=3306, master_user='tongbu',master_password='hisense',master_log_file='mysql-bin.000001',master_log_pos=120; MySQL> start slave;

在A服务器上指定更新点(根据上面样例修改MASTER_LOG_FILE值为样例结果中File的值;修改MASTER_LOG_POS值为样例结果中Position的值) MySQL> stop slave; MySQL> change master to master_host='10.18.224.81', master_port=3306, master_user='tongbu',master_password='hisense',master_log_file='mysql-bin.000001',master_log_pos=120; MySQL> start slave; 重启A、B服务器的mysql服务

4、检查数据库同步状态

查看A、B数据库同步状态, 输入以下命令,会出来很多信息,但是主要看Slave_IO_Running与Slave_SQL_Running这两个字段都显示yes就行了 MySQL> show slave status\G;

查看A、B服务器的同步线程状态,输入以下命令 MySQL > show processlist\G

5、测试

分别在两个服务器的库中创建新增表 表记录增删改测试看是否会同步