mariadb实现服务器的数据主从同步1. 主从同步配置原理2. 使用mariadb实现主从同步
mariadb实现服务器的数据分库-主从同步
1. 主从同步配置原理
?
- mariadb主从复制中:
-
第一步:master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。Mariadb将事务写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。 第二步:slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经执行完master产生的所有文件,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。 第三步:SQL slave thread(SQL线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重新执行其中的事件而更新slave的数据,使其与master中的数据一致。 -
mariadb主从复制概述:
2. 使用mariadb实现主从同步
前置条件:
-两台分别配置了mariadb的服务器, ,搭建之前两个数据库的数据保持一致
主配置:
-
修改配置文件 # 注意这里和MySQL的配置是不一样的
vim /etc/my.cnf.d/server.cnf
?
# 在配置文件后面添加
server-id=1
log-bin=mysql-bin -
重启mariadb服务 systemctl restart mariadb.service -
创建slave用户 # 进入mariadb数据库中
# 创建slave用户,设置密码为123
MariaDB [(none)]> CREATE USER 'slave'@'%' IDENTIFIED BY '123';
# 赋予slave用户最高权限
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%'; -
刷新数据库权限,使之设置生效 MariaDB [(none)]> flush privileges; -
查看master的状态 ,如图 MariaDB [(none)]> show master status;
?
-
注:内容,slave服务器设置要用到
从配置:
-
修改配置文件 # 注意这里和MySQL的配置是不一样的
vim /etc/my.cnf.d/server.cnf
?
# 在配置文件后面添加,注意这里和主配置中的不一致
server-id=2 -
重启mariadb服务,使之生效 systemctl restart mariadb.service -
建立主从链接 # 进入从服务器的mariadb中 执行以下命令
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.29.137', MASTER_USER='slave',
MASTER_PASSWORD='123', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1443;(必须和主sql一样)
# MASTER_HOST:主机ip
# MASTER_USER:主机中设置的salve用户名
# MASTER_PASSWORD: 主机中设置的salve用户的密码
# MASTER_LOG_FILE,MASTER_LOG_POS:主机中查到的数据 -
启动slave MariaDB [(none)]> start slave; -
查看数据库的I/O线程,SQL线程 MariaDB [(none)]> show slave status\G;
????????
?
注:如果这两个的状态均为YES,就代表成功了
接下来,就可以进行验证了
我们可以在主库中添加数据,之类的操作,之后从服务器数据库就会自动同步数据了.
参考:
mariadb配置主从 mariadb主从配置-白红宇的个人博客
Mariadb数据库主从复制原理&实践技术文档 - 云+社区 - 腾讯云 (tencent.com)
|