zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    3DMAX贴图无法显示
    3DMAX2016安装教程【图文】
    OSG学习:转动的小汽车示例
    JAVA Eclipse 快捷键
    解决JQUERY在IE8,7,6下将字符串转成XML对象时产生的BUG
    毕设二:python 爬取京东的商品评论
    redis 注册为服务
    python 爬取bilibili 视频弹幕
    python 爬取36kr 7x24h快讯
    jQuery实现表格冻结行和列
  • 原文地址:https://www.cnblogs.com/firestar277/p/14577410.html
Copyright © 2011-2022 走看看