Linux配置mariadb(mysql)主从数据库同步(centos7)

主服务器:IP:192.168.1.150
从服务器:IP:192.168.1.160
mariadb(mysql)版本:mariadb-5.5.64-1.el7.x86_64

一、主服务器相关配置

1、登录主服务器mariadb(mysql),创建测试数据库newdb,退出mariadb(mysql)。
# mysql -uroot -p
MariaDB [(none)]> create database newdb;
MariaDB [(none)]> exit;

2、修改/etc/my.cnf文件,[mysqld]下面添加以下参数,保存配置文件。
# vi /etc/my.cnf
server-id=1
log-bin=mysql-bin #启动MySQL二进制日志系统
binlog-do-db=newdb #需要同步的数据库
binlog-ignore-db=information_schema,mysql,test #不需要同步的数据库

Linux配置mariadb(mysql)主从数据库同步(centos7)

3、重启mariadb(mysql)服务。
# systemctl restart mariadb

4、登录mariadb(mysql)。
# mysql -uroot -p

5、只授权远程计算机’192.168.1.160’使用账户new,密码new,登录本机数据库,对数据库的所有库和所有表只能进行复制操作(. :所有库的所有表)。
MariaDB [(none)]> grant replication slave on *.* to ‘new’@‘192.168.1.160’ identified by ‘new’;

6、刷新权限。
MariaDB [(none)]> flush privileges;

8、关闭所有打开的表锁定数据库以防止写入数据。
MariaDB [(none)]> flush tables with read lock;

9、退出mysql。
MariaDB [(none)]> exit;

10、使用root账户及密码导出newdb数据库(new账号无此权限)。
# mysqldump -uroot -pserver7 --databases newdb > /root/newdb.sql;

11、使用scp命令传输数据库文件newdb.sql到从服务器/root根目录。
# scp /root/newdb.sql [email protected]:/root

12、登录数据库,解锁数据库。
# mysql -uroot -p
MariaDB [(none)]> unlock tables;

13、查看master状态(注意File与Position项,配置slave从服务器需要这两项参数)
MariaDB [(none)]> show master status \G

Linux配置mariadb(mysql)主从数据库同步(centos7)

二、从服务器相关配置

1、修改/etc/my.cnf文件,在[mysqld]下添加以下参数,保存配置。
# vi /etc/my.cnf
server-id=3 #设置从服务器id,必须与主服务器不同
log-bin=mysql-bin #启动MySQ二进制日志系统
replicate-do-db=newdb #需要同步的数据库名
replicate-ignore-db=information_schema,mysql,test #不需要同步的数据库名
Linux配置mariadb(mysql)主从数据库同步(centos7)
2、重启mysql服务。
# systemctl restart mariadb

3、导入主服务器复制过来的数据库。
# mysql -uroot -pclient7a < /root/newdb.sql

4、配置主从同步(master_log_file与master_log_pos是主服务器master状态下的File与Position)。
# mysql -uroot -p
MariaDB [(none)]> show databases; #查看导入数据库
MariaDB [(none)]> use mysql; #切换数据库
MariaDB [mysql]> stop slave; #停止slave
MariaDB [mysql]> change master to
master_host=‘192.168.1.150’,
master_user=‘new’,
master_password=‘new’,
master_log_file=‘mysql-bin.000003’,
master_log_pos=493; #配置主从同步参数
MariaDB [mysql]> start slave; #开启slave
Linux配置mariadb(mysql)主从数据库同步(centos7)
5、查看slave状态。
MariaDB [mysql]> show slave status \G
Linux配置mariadb(mysql)主从数据库同步(centos7)

注意:Slave_IO_Running: Connecting 和Slave_SQL_Running: Yes 这两项必须为Connecting和Yes,Master_Log_File、Read_Master_Log_Pos要与主服务器master状态下的File,Position相同。如果都是正确的,则说明配置成功!

6、show slave status \G,部分参数含义解析。

参数 含义
Master_Host: 192.168.1.200 maeter端主机IP。
Master_User: new 用于连接maeter端的用户。
Master_Port: 3306 maeter端监听的端口。
Connect_Retry: 60 中从连接失败,重试时间间隔。
Master_Log_File: mysql-bin.000001 I/O线程读取的master二进制日志文件的名称。
Read_Master_Log_Pos: 1339 I/O线程已读取的master二进制日志文件的位置。
Relay_Log_File: mariadb-relay-bin.000002 线程读取和执行的中继日志文件的名称。
Relay_Log_Pos: 1241 线程已读取和执行的中继日志文件的位置。
Relay_Master_Log_File: mysql-bin.000001 sql线程执行的master二进制日志文件的名称。
Slave_IO_Running: Yes I/O线程是否被启动并成功地连接到主服务器上。
Slave_SQL_Running: Yes sql线程是否被启动。
Replicate_Do_DB: newdb 指定的同步的数据库列表。
Replicate_Ignore_DB: information_schema,performance_schema,mysql,test 指定的不需要同步的数据库列表。
Replicate_Do_Table: 指定的同步的表列表。
Replicate_Ignore_Table: 指定的不需要同步的表列表。
Seconds_Behind_Master: 0 salve端sql线程和I/O线程之间的时间差距,单位为秒常被用于主从延迟检查方法之一。

三、测试主从服务器同步数据

1、主服务器操作数据库newdb,新建表stu,插入数据。在Master服务器的任何修改都会通过事务日志提交到Slave服务器,测试过程如下。
# mysql -uroot -p
MariaDB [(none)]> use newdb;
MariaDB [newdb]> create table stu (age int, name char(40) ) ;
MariaDB [newdb]> show tables ;
MariaDB [newdb]> insert into stu values (19, ‘李明’) ;
MariaDB [newdb]> insert into stu values (20, ‘王力’) ;
MariaDB [newdb]> insert into stu values (30, ‘赵亮’) ;
MariaDB [newdb]> select * from stu;

              主服务器                                      从服务器

Linux配置mariadb(mysql)主从数据库同步(centos7)