笔者搭建mysql(mariadb)主从复制服务,测试主备同步正常。
主机master是windows 7 系统,数据库mariadb,IP地址192.168.31.33。
从机slave是树莓派4B,数据库mariadb,IP地址192.168.31.82。
同步前要保证主从机mariadb要复制的数据库内容要一样,可以通过主库锁表的方法来导出数据库,再在从机上执行。当然可以利用可视化工具Navicat或者phpmyadmin来导出数据。
1、同步原理
老生常谈的原理还是说一下, slave会从master读取binlog来进行数据同步,是基于sql语句来同步执行的。
主要有以下三个步骤:
①master将改变记录到二进制日志(binary log),这些记录过程叫做二进制日志事件(binary log events)。
②slave将master的binary log events拷贝到中继日志(relay log)。
③slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL的复制是异步且串行化的。

2、主机配置192.168.31.33
a、在my.ini文件 [mysqld]后面添加主机id等信息。
server-id=6045771 主机id,要唯一
log_bin=mysql-bin 二进制日志文件名称
log_error=mysql-bin.err 错误日志名称
binlog_do_db=masterslave 只复制数据库masterslave
b、创建同步账号sync,密码sync。
grant replication slave on *.* to 'sync'@'192.168.31.82' identified by 'sync';
flush privileges;
c、重启master
命令行输入service mysqld restart,注意不是mysql的命令行,而是终端terminal。
3、从机配置192.168.31.82
a、修改/etc/my.cnf
树莓派mariadb数据库配置文件在/etc/mysql/my.cnf中,当然linux平台不同可能位置也不一样,可以通过sudo find / -name my.cnf来查找。在文件末尾添加如下的id信息。
[mysqld]
server-id=62
在编辑文件是注意文件权限问题,需要root权限,sudo nano /etc/mysql/my.cnf即可。
b、重启slave
service mysqld restart。
c、salve指向master
CHANGE MASTER TO MASTER_HOST='192.168.31.33',MASTER_USER='sync',MASTER_PASSWORD='sync',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=1109;
注意MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=1109是对应着msater日志的位置,可以在主机上输入命令show master status \G 来查看。

d、启动slave
start slave;
e、检查salve状态
show slave status \G。
看看从机上的这两个进程状态:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
同步成功,可以在主机上插入一条数据测试一下了。
stop slave;可以停止slave同步,重新开启后会读取relay日志来重新同步。

4、可视化工具phpmyadmin来配置
笔者第一次配置时,不懂具体的步骤,在同步账号上卡了好久,最后配置失败。其实命令行和phpmyadmin配合起来一起可以事半功倍,配置文件可以利用phpmyadmin来生成修改信息,从机指向主机时,在从机命令行上操作。

网友评论