生产环境主从复制的账号和密码不建议和项目用同一个,要单独创建一个用户专门用于主从复制,防止项目改密码的时候,主从复制无法使用!!!
上面这种模式,也就是双主双从模式。作为主库也作为从库的库,my.cnf文件的[mysqld]的参数必须加log-slave-updates
没有/etc/my.cnf就创建,改/etc/my.cnf.d/server.cnf是没用的!!!
A:192.168.1.11
B:192.168.1.22
C:192.168.1.111
D:192.168.1.222
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
没有/etc/my.cnf就创建,改/etc/my.cnf.d/server.cnf是没用的!!!如果指定了datadir和basedir需要同时在my.cnf和server.cnf配置
/etc/my.cnf
[mysqld]
#主数据库
server-id=1
#log-bin相对存放路径和名称
log-bin=mariadb-bin
#不主从复制的库
binlog-ignore-db=mysql,information_schema,performance_schema,sys
#复制模式STATEMENT,ROW,MIXED
binlog_format=MIXED
#从数据库
relay-log=mariadb-relay
#记录从库日志更新(即是主库也是从库必须配)
log-slave-updates
改完配置文件,重启数据库,使配置文件生效。
mysql -u root -p
show master status;
记好File和Position的值,Master2会考的!
+--------------------+----------+--------------+-------------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+-------------------------------------------------+
| mariadb-bin.000001 | 1 | | mysql,information_schema,performance_schema,sys |
+--------------------+----------+--------------+-------------------------------------------------+
跟B绑定,MASTER_HOST是B的IP,MASTER_USER是B可远程登录的用户名,MASTER_PASSWORD是B可远程登录的用户名的密码,MASTER_LOG_FILE是B输入show master status;打印出来的File的值,MASTER_LOG_POS是B输入show master status;打印出来的Position的值
CHANGE MASTER TO MASTER_HOST='192.168.1.22',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000002',MASTER_LOG_POS=2;
启动主从复制
start slave;
查看主从复制是否成功
SHOW SLAVE STATUS\G;
打印出来下面这2个参数的值都为Yes就是成功,有一个No都不行
lave_IO_Running: Yes
Slave_SQL_Running: Yes
没有/etc/my.cnf就创建,改/etc/my.cnf.d/server.cnf是没用的!!!如果指定了datadir和basedir需要同时在my.cnf和server.cnf配置
/etc/my.cnf
[mysqld]
#主数据库
server-id=2
#log-bin相对存放路径和名称
log-bin=mariadb-bin
#不主从复制的库
binlog-ignore-db=mysql,information_schema,performance_schema,sys
#复制模式STATEMENT,ROW,MIXED
binlog_format=MIXED
#从数据库
relay-log=mariadb-relay
#记录从库日志更新(即是主库也是从库必须配)
log-slave-updates
改完配置文件,重启数据库,使配置文件生效。
mysql -u root -p
show master status;
记好File和Position的值,Master1会考的!
+--------------------+----------+--------------+-------------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+-------------------------------------------------+
| mariadb-bin.000002 | 2 | | mysql,information_schema,performance_schema,sys |
+--------------------+----------+--------------+-------------------------------------------------+
跟A绑定,MASTER_HOST是A的IP,MASTER_USER是A可远程登录的用户名,MASTER_PASSWORD是A可远程登录的用户名的密码,MASTER_LOG_FILE是A输入show master status;打印出来的File的值,MASTER_LOG_POS是A输入show master status;打印出来的Position的值
CHANGE MASTER TO MASTER_HOST='192.168.1.11',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=1;
启动主从复制
start slave;
查看主从复制是否成功
SHOW SLAVE STATUS\G;
打印出来下面这2个参数的值都为Yes就是成功,有一个No都不行
lave_IO_Running: Yes
Slave_SQL_Running: Yes
/etc/my.cnf
[mysqld]
server-id=3
relay-log=mariadb-relay
改完配置文件,重启数据库,使配置文件生效。
mysql -u root -p
跟A绑定,MASTER_HOST是A的IP,MASTER_USER是A可远程登录的用户名,MASTER_PASSWORD是A可远程登录的用户名的密码,MASTER_LOG_FILE是A输入show master status;打印出来的File的值,MASTER_LOG_POS是A输入show master status;打印出来的Position的值
CHANGE MASTER TO MASTER_HOST='192.168.1.11',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000001',MASTER_LOG_POS=1;
启动主从复制
start slave;
查看主从复制是否成功
SHOW SLAVE STATUS\G;
打印出来下面这2个参数的值都为Yes就是成功,有一个No都不行
lave_IO_Running: Yes
Slave_SQL_Running: Yes
/etc/my.cnf
[mysqld]
server-id=4
relay-log=mariadb-relay
改完配置文件,重启数据库,使配置文件生效。
mysql -u root -p
跟B绑定,MASTER_HOST是B的IP,MASTER_USER是B可远程登录的用户名,MASTER_PASSWORD是B可远程登录的用户名的密码,MASTER_LOG_FILE是B输入show master status;打印出来的File的值,MASTER_LOG_POS是B输入show master status;打印出来的Position的值
CHANGE MASTER TO MASTER_HOST='192.168.1.22',MASTER_USER='copy',MASTER_PASSWORD='copy',MASTER_LOG_FILE='mariadb-bin.000002',MASTER_LOG_POS=2;
启动主从复制
start slave;
查看主从复制是否成功
SHOW SLAVE STATUS\G;
打印出来下面这2个参数的值都为Yes就是成功,有一个No都不行
lave_IO_Running: Yes
Slave_SQL_Running: Yes
这个错误是因为之前已经有主从复制的数据了,要先清空。
解决方案:
登录MariaDB
mysql -u root -p
停止主从复制
STOP SLAVE;
清空所有主从复制的内容
reset slave all;
然后重新操作一次!!!快乐吧?快乐就对了!