MariaDb 开启主从模式
Mysql/Mariadb的主从同步的原理是从机根据主机日志的顺序进行同步,所以进行同步之前请停止数据的访问,备份还原从机版本,保证两边数据的一致性
主数据库
Docker 安装后如果不包含vi指令,先更新
apt-get update
apt-get install vim
编辑my.conf
vi /etc/mysql/my.cnf
添加下列参数
[mysqld]
log-bin=mysql-bin #[可选]启用二进制日志
server-id=2 #serverid 自定义,不能与从机重复
#binlog-do-db = Test //只记录Test库变化,多个库用‘,’分隔
#binlog-ignore-db = mysql //忽略mysql库变化,多个库用‘,’分隔
#log-bin = /var/lib/mysql/master-bin.log //数据库日志路径
重启dockerdocker restart Mariadb,或者重启数据库服务 service mariadb restart
进入数据库mysql -uroot -p;
创建从机使用的数据库用户(slave)或者给已有的用户增加slave权限,锁定数据库读写(可选)
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
FLUSH PRIVILEGES;
FLUSH TABLES WITH READ LOCK; ,#锁定数据库读写
查看 运行状态 show master status;

记录 file 和 position 的值,从服务器配置用到。这个时候不要去动主数据库,会影响 position 的值。
从数据库
编辑my.conf
vi /etc/mysql/my.cnf
添加下列参数
[mysqld]
log-bin=mysql-bin #[可选]启用二进制日志
server-id=64 #serverid 自定义,不能与主机重复
#binlog-do-db = Test //只记录Test库变化,多个库用‘,’分隔
#binlog-ignore-db = mysql //忽略mysql库变化,多个库用‘,’分隔
#log-bin = /var/lib/mysql/master-bin.log
重启dockerdocker restart Mariadb,或者重启数据库服务 service mysqld restart
进入数据库mysql -uroot -p;
进入数据库;
mysql -uroot -p
运行命令
change master to master_host='你的IP',master_user='用户名',master_port=端口,master_password='密码',master_log_file='File的值',master_log_pos=Position的值;
启用从机;
start slave;
查看从机运行状态
show slave status\G;

Slave_IO_Running 和 Slave_SQL_Running 必须都为 Yes 才算成功。
解除主数据库锁定
mysql -u root -p
UNLOCK TABLES;
exit;
停用从机
stop slave;
其他异常解决
同步异常,
stop slave;
set global sql_slave_skip_counter=1;
start slave;

浙公网安备 33010602011771号