返回列表 发帖

MariaDB主从同步

笺注:MariaDB的安装可参考 CentOS8安装LAMP+phpMyAdmin


MariaDB主从同步

让mysql-1成为主,mysql-2成为从,也就是让mysql-2可以自动同步mysql-1的指定数据库,反之不行。

mysql-1:192.168.168.154
mysql-2:192.168.168.155


服务器的版本信息:
[root@centos8 ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@centos8 ~]#
[root@centos8 ~]# uname -r
4.18.0-193.el8.x86_64


MariaDB主从服务器都要在防火墙(Firewalld)打开TCP 3306端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload


MariaDB主从服务器都要关闭SELinux:
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config






mysql-1

创建测试用的库和表:

create database data1;
use data1;
create table class1 (id int,name varchar(6));

create database data2;
use data2;
create table class2 (id int,name varchar(6));

图片1.png



修改MariaDB的主配置文件:
[root@mysql-1 ~]# vi /etc/my.cnf

#在[mysqld]下面修改:(如果没有就手动添加)
server-id=1   # 每台MariaDB服务器的ID必须是唯一的
log-bin=binlog   # 启用日志

#在[mysqld]下面追加:
binlog-do-db=data1   # 指明同步的库
binlog-do-db=data2

如下图:
图片2.png


修改完配置文件后,MariaDB服务必须可以重启成功:
[root@mysql-1 ~]# systemctl restart mariadb



mysql-1赋予mysql-2可使用的权限账号 ( 用户名:happy,远程客户端可访问IP:192.168.168.155,密码:888 ):
MariaDB [(none)]> grant replication slave on *.* to happy@192.168.168.155 identified by '888';
Query OK, 0 rows affected (0.001 sec)


显示mysql-1的master信息:
MariaDB [(none)]> show master status;
图片3.png
注释:mysql-2进行同步时要用到的数据信息(binlog.000002、521



只备份data1和data2这两个库,备份出来的文件名为/backup.sql
[root@mysql-1 ~]# mysqldump -u"root" --master-data=1 --databases data1 data2 > /backup.sql

注释:加上 --master-data=1 就不用锁表。


在mysql-1将/backup.sql,通过scp命令传到mysql-2的目录/root下:
[root@mysql-1 ~]# scp -rp /backup.sql root@192.168.168.155:/root
The authenticity of host '192.168.168.155 (192.168.168.155)' can't be established.
ECDSA key fingerprint is SHA256:Zwe3TeKIW6szE3+SkP1c7gjJUUMTVaqteOERUNAkHk0.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.168.155' (ECDSA) to the list of known hosts.
root@192.168.168.155's password:  #输入192.168.168.155的系统用户root的密码
backup.sql    100% 2871   748.2KB/s   00:00   





mysql-2

修改MariaDB的主配置文件:
[root@mysql-2 ~]# vi /etc/my.cnf
#在[mysqld]下面修改:(如果没有就手动添加)
server-id=2   # 每台MariaDB服务器的ID必须是唯一的

如下图:
图片4.png


修改完配置文件后,MariaDB服务必须可以重启成功:
[root@mysql-2 ~]# systemctl restart mariadb


导入数据库:
[root@mysql-2 ~]# mysql -u"root" < /root/backup.sql



在从数据库上进行同步:(mysql-2)
stop slave;

change master to master_host='192.168.168.154',
master_user='happy',
master_password='888',
master_log_file='binlog.000002',master_log_pos=521;

start slave;

如下图:
图片5.png


在mysql-2上查看从库状态,确认以下两项的参数都为Yesshow slave status\G;
     Slave_IO_Running: Yes
     Slave_SQL_Running: Yes
图片6.png



######

主从测试

mysql-1:
use data1;
create table class11 (id int,name varchar(6));

use data2;
create table class22 (id int,name varchar(6));

insert into class22 values (168,'Hello');



mysql-2:
图片7.png

图片8.png


笺注:
实验中,主从同步成功;
实验中,两台MariaDB服务器不论顺序重启后,同步都是正常的;



主服务器(mysql-1)重启后,其master信息会自动改变的:
图片9.png


从服务器(mysql-2)理应会自动同步主服务器(mysql-1)的master信息:
图片10.png





相关文章:
CentOS6_Mycat实现MariaDB的读写分离
MySQL5.6主从/主主同步

返回列表