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;
image

记录 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;
image
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;
posted @ 2023-03-15 16:58  年年有鱼417  阅读(133)  评论(0)    收藏  举报