mysql数据库主主复制Linux中的整体流程

**

mysql主主复制

**

上传正式服务器(服务器一为(mysql11)、服务器二为(mysql12))–两个主从为主主!!

将两台服务器中的mysql安装成相同版本的数据库;

例:如果服务器1为mysql5.6.40,则服务器2也一定为mysql5.6.40;同版本号!!!

准备在两台服务器的配置文件my.cnf
(一般Linux中的MySQL配置文件都在/etc/my.cnf(windows中的配置文件为mysql.ini)

除非特殊情况的配置文件在mysql的根目录下)

在第一台服务器中配置:

#任意自然数n,只要保证两台MySQL主机不重复就可以了。

server-id=11  

#开启二进制日志

log-bin=mysql-bin

#步进值auto_imcrement一般有n台主MySQL就填n

auto_increment_increment=2

#起始值。一般填第n台主MySQL。此时为第一台主MySQL

auto_increment_offset=1   

#忽略mysql库【可不写】

binlog-ignore=mysql   

#忽略information_schema库【可不写】

binlog-ignore=information_schema   

#要同步的数据库,默认所有库

replicate-do-db=demo

relay_log=mysql-relay-bin

log-slave-updates=on

在第二台服务器中配置:

任意自然数n,只要保证两台MySQL主机不重复就可以了。

server-id=12

log-bin=mysql-bin

auto_increment_increment=2

auto_increment_offset=2

要同步的数据库,默认所有库

replicate-do-db=demo

relay_log=mysql-relay-bin

log-slave-updates=on

开始构建服务器配置
①在服务器一中执行(mysql11):

登录数据库:mysql -u root -p

#选择将要复制的数据库

 mysql>use demo;

 mysql>FLUSH PRIVILEGES;

 mysql>GRANT REPLICATION SLAVE ON *.* TO 'mysql12'@'192.168.1.1' IDENTIFIED BY 'mysql12';

 mysql>FLUSH PRIVILEGES;

 mysql>show master status;

mysql数据库主主复制Linux中的整体流程
在服务器二中执行(mysql12):

mysql>CHANGE MASTER TO

       MASTER_HOST='192.168.1.2',

       MASTER_USER='mysql12',

       MASTER_PASSWORD='123456',

       MASTER_LOG_FILE='mysql-bin.000001',

       MASTER_LOG_POS=3617472;

mysql数据库主主复制Linux中的整体流程

开启主从复制

mysql>start slave;

查看主从复制是否配置成功

mysql>SHOW SLAVE STATUS\G  

mysql数据库主主复制Linux中的整体流程

②在服务器二中执行(mysql12):

登录数据库: mysql -u root -p

#选择将要复制的数据库

mysql>use demo;

mysql>FLUSH PRIVILEGES;

mysql>GRANT REPLICATION SLAVE ON *.* TO 'mysql11'@'192.168.1.2' IDENTIFIED BY '123456';

mysql>FLUSH PRIVILEGES;

mysql>show master status;

mysql数据库主主复制Linux中的整体流程

在服务器一中执行(mysql11):

mysql>CHANGE MASTER TO

       MASTER_HOST='192.168.1.1',

       MASTER_USER='mysql11',

       MASTER_PASSWORD='123456',

       MASTER_LOG_FILE='mysql-bin.000004',

       MASTER_LOG_POS=120;

mysql数据库主主复制Linux中的整体流程

开启主从复制

mysql>start slave;

查看主从复制是否配置成功

mysql>SHOW SLAVE STATUS\G

mysql数据库主主复制Linux中的整体流程

完成主主复制,下面来进行测试:

在第一台服务器(mysql11)中执行:

INSERT INTO `demo`.`captcha`(`id`, `createTime`, `expiresIn`, `mobile`, `value`) VALUES ('873', '2019-01-10 14:30:12', 1, '1', '1');

Select * from captcha;

mysql数据库主主复制Linux中的整体流程

在第二台服务器(mysql12)中执行:

Select * from captcha;

在第二台服务器(mysql12)中执行:

INSERT INTO `demo`.`captcha`(`id`, `createTime`, `expiresIn`, `mobile`, `value`) VALUES ('1888', '2019-01-10 16:03:12', 1, '1', '1');

在第一台服务器(mysql11)中执行:

Select * from captcha;

mysql数据库主主复制Linux中的整体流程

第一台服务器配置:

use demo;
FLUSH PRIVILEGES;
GRANT REPLICATION SLAVE ON *.* TO 'mysql12'@'192.168.1.1' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
show master status;
CHANGE MASTER TO
MASTER_HOST='192.168.1.2',

MASTER_USER='mysql12',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000001',

MASTER_LOG_POS=3632194;

第二台服务器配置:

use demo;
FLUSH PRIVILEGES;
GRANT REPLICATION SLAVE ON *.* TO 'mysql11'@'192.168.1.2' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
show master status;
CHANGE MASTER TO
MASTER_HOST='192.168.1.1',

MASTER_USER='mysql11',

MASTER_PASSWORD='123456',

MASTER_LOG_FILE='mysql-bin.000009',

MASTER_LOG_POS=3074547;





mysql -umysql12 -h 192.168.1.1 -p 123456

测试:

INSERT INTO `demo`.`captcha`(`id`, `createTime`, `expiresIn`, `mobile`, `value`) VALUES ('111', '2019-01-10 18:30:12', 1, '1', '1');

INSERT INTO `demo`.`captcha`(`id`, `createTime`, `expiresIn`, `mobile`, `value`) VALUES ('4', '2019-01-10 14:33:12', 1, '1', '1');

异常处理

[ERROR] Slave SQL: Slave failed to initialize relay log info structure from the repository, Error_code: 1872

原因:检查my.cnf,原来没指定relay_log,mysql默认产生的relay_log名被该server上的另一个mysql slave占用了。

解决方法:

1.在my.cnf中添加

relay_log=/db/mysql56/logs/relay_98_3326
 reset slave

mysql>reset slave

mysql>change master to

master_host='192.168.0.38',

master_user='repl',

master_password='slave',

master_port=3306,

master_log_file='mysql-bin.001229',

master_log_pos=15970007;



mysql>start slave;

5.7以上的版本在重启数据库 之后不必重新配置双主从,如果是5.7以下的数据库在重启之后需要重新配置主从;
可查看数据库5.6与5.7配置说明网站有说明~~