CentOS8 MariaDB 主从复制 配置

MariaDB 主从复制

一. 修改 mariadb 的配置文件 my.cnf

1) 修改my.cnf

vim /etc/my.cnf
  • 在[mysqld]中添加:
server-id=1
log_bin=master-bin
log_bin_index=master-bin.index
binlog_do_db=test

备注:
server-id 服务器唯一标识。
log_bin 启动MySQL二进制日志,即数据同步语句,从数据库会一条一条的执行这些语句。
binlog_do_db 指定记录二进制日志的数据库,即需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可。
binlog_ignore_db 指定不记录二进制日志的数据库,即不需要复制的数据库名,如果有多个数据库,重复设置这个选项即可。
其中需要注意的是,binlog_do_db和binlog_ignore_db为互斥选项,一般只需要一个即可。

2). 在主服务器上创建用户

创建一个用户,此用户可以在从服务器上连到主服务器
所以此用户是给Slave使用的

  • 进入mysql数据库
mysql -uroot -p
Enter password:
  • 创建从数据库的rootslave用户和权限
CREATE USER 'rootslave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  • 创建用户
grant replication slave on *.* to 'rootslave'@'%'; #授权
  • Mysql5 的写法:
grant replication slave on *.* to rootslave@'192.168.0.%' identified by '123456';

192.168.0.%通配符,表示0-255的IP都可访问主服务器,正式环境请配置指定从服务器IP
若将 192.168.0.% 改为 %,则任何ip均可作为其从数据库来访问主服务器

  • 退出mysql
mysql> exit;

3). 重启 mariadb 服务

systemctl restart mysqld

4). 查看主服务器状态

  • 进入 mysql 数据库
  • 查看主服务器状态
mysql> show master status;


二. 配置 Slave 从服务器的配置

1). 修改配置文件 my.cnf

vi /etc/my.cnf
  • 在 [mysqld] 中添加:
server-id=2
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
#replicate-do-db=test

备注:
server-id 服务器唯一标识,如果有多个从服务器,每个服务器的server-id不能重复,跟IP一样是唯一标识,如果你没设置server-id或者设置为0,则从服务器不会连接到主服务器。
relay-log 启动MySQL二进制日志,可以用来做数据备份和崩溃恢复,或主服务器挂掉了,将此从服务器作为其他从服务器的主服务器。
replicate-do-db 指定同步的数据库,如果复制多个数据库,重复设置这个选项即可。若在master端不指定binlog-do-db,则在slave端可用replication-do-db来过滤。
replicate-ignore-db 不需要同步的数据库,如果有多个数据库,重复设置这个选项即可。
其中需要注意的是,replicate-do-db和replicate-ignore-db为互斥选项,一般只需要一个即可。

2). c重启slave上的mariadb 服务

systemctl restart mysqld

3). 连接 master 主服务器

mysql -uroot -p
  • 停止从服务
stop slave;
  • 连接 master 主服务器
mysql>change master to
master_host='aaa.aaa.aa.aaa',
master_port=3306,master_user='rootslave',
master_password='123456',master_log_file='master-bin.000001',
master_log_pos=156;

备注:
master_host对应主服务器的IP地址。
master_port对应主服务器的端口。
master_log_file对应show master status显示的File列:master-bin.000001。
master_log_pos对应show master status显示的Position列:154。

4). 启动 slave 数据同步

mysql>start slave; #启动slave数据同步
mysql> stop slave; #关闭slave数据同步

5). 查看 slave 信息

mysql>show slave statusG;

如果 Slave_IO_RUNNING 和 Slave_SQL_Running 都为 YES, 表示同步成功.



三. 遇到的问题及解决方案

MariaDB主从分离,出现 Slave_sql_running:no 和 Slave_io_running:no 问题的解决办法
https://blog.csdn.net/ZhiAi_ZhengLiLi/article/details/102943114

(一)、问题描述:

当我们配置好MySQL主主同步时,是可以实现主主同步,但是重启机器后就发现无法同步了。

(二). Slave两个关键进程:

mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是slave_sql_running,一个是Slave_IO_Running,一个负责与主机的io通信,一个负责自己的slave mysql进程。

(三)、如果是Slave_SQL_Running:no

解决办法如下:

MariaDB [(none)]> stop slave;
MariaDB [(none)]> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave statusG

(四)、如果是slave_io_running:no

解决办法如下:

1、查看主服务器:
MariaDB [(none)]> show master statusG
2、在从服务器上查看:

问题所在:发现Master_Log_File没有对应。

3、出现 Slave_IO_Running: No 的机器上操作:
MariaDB [(none)]> slave stop;
MariaDB [(none)]>CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000026’, MASTER_LOG_POS=0;
MariaDB [(none)]> slave start;
MariaDB [(none)]> show slave statusG
原文地址:https://www.cnblogs.com/firestar277/p/14577410.html