MySQL

mysql(mariadb)数据库主备同步

2020-08-25  本文已影响0人  刘小白DOER

笔者搭建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来生成修改信息,从机指向主机时,在从机命令行上操作。

上一篇 下一篇

猜你喜欢

热点阅读