文章目录

  • 一、主服务器相关配置
  • 二、从服务器相关配置
  • 三、测试主从服务器同步数据


主服务器: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,performance_schema,mysql  #不需要同步的数据库

mariadb10异步复制 mariadb数据库同步_服务器

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	 root@192.168.1.160:/root

12、登录数据库,解锁数据库。

mysql -uroot -p
MariaDB [(none)]>	unlock    tables;

13、查看master状态(注意File与Position项,配置slave从服务器需要这两项参数)

MariaDB [(none)]>	show master  status    	\G

mariadb10异步复制 mariadb数据库同步_mariadb10异步复制_02

二、从服务器相关配置

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,performance_schema,mysql  #不需要同步的数据库名

mariadb10异步复制 mariadb数据库同步_数据库_03


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 [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.000022',master_log_pos=245;  	#配置主从同步参数
MariaDB [mysql]>	start slave;	 #开启slave

mariadb10异步复制 mariadb数据库同步_数据库_04


5、查看slave状态。

MariaDB [mysql]>	show slave status 	\G

mariadb10异步复制 mariadb数据库同步_mysql_05

注意:Slave_IO_Running: Connecting 和Slave_SQL_Running: Yes 这两项必须为Yes和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;

              主服务器                                      从服务器

mariadb10异步复制 mariadb数据库同步_数据库_06