MariaDB 搭建主备及主主

一、主备

  1. 采用GTID进行主从复制

    A. 在my.cnf配置如下参数:

sync-master-info = 1 #MariaDB依靠操作系统将master.info文件刷新到磁盘。
sync_relay_log_info = 1 #MariaDB依靠操作系统将relay-log.info文件刷新到磁盘。
master-verify-checksum = 1 #主服务器效验
slave-sql-verify-checksum = 1 #从服务器效验
server-id = 111111 #MySQL服务器ID,不重复,可以通过Linux系统变量来生成:$RANDOM
log-bin = mysql-bin #二进制日志(默认开启)
sync-binlog = 1 #主服务器进行设置,用于事务安全
log-bin-index = mysql-bin
relay-log = relay-bin #中继日志
slave-parallel-threads = 2 #设定从服务器的SQL线程数
relay_log_recovery = 1 #从站崩溃后可以使用,防止损坏的中继日志处理。
log-slave-updates = 1 #slave将复制事件写进自己的二进制日志
relay-log-index = relay-bin
log_bin_trust_function_creators=1
replicate-ignore-table = xxl_job.xxl_job_log replicate-ignore-table = xxl_job.xxl_job_log_report replicate-ignore-table = xxl_job.xxl_job_registry

    B. 在主库中创建复制账号,允许从库来访问,命令如下:grant replication slave,replication client on *.* to 'rhxycopy'@'192.168.1.2' IDENTIFIED by '123456'; flush privileges;

    C. 在从库上执行如下命令:stop slave; reset slave; change master to master_host='192.168.1.1', master_port=3306, master_user='rhxycopy', master_password='123456', master_use_gtid=slave_pos; start slave;

    D. 在从库上确认复制正常:Slave_IO_Running和Slave_SQL_Running都为YES;

    E. 常见使用命令如下:

      select * from mysql.user;

      flush privileges;

      delete from mysql.user where User='rhxycopy';

           show master status;

           show slave status;

      show global variables like 'gtid%';

  2. master_use_gtid参数使用

    A. slave_pos:Slave将Master最后一个GTID的position复制到本地,Slave主机可通过gtid_slave_pos变量查看最后一个GTID的position;

    B. current_pos:假设有AB两台主机,A是Master,当A故障后,B成为Master,A修复后以Slave的身份重新添加,A之前从没担任过slave角色,所以没有之前复制的GTID号,此时gtid_slave_pos为空,为了能让A能自动添加为Slave,此时就用到该选项,但要注意不要让从服务器在binlog日志中写入事务,建议在服务器上设置gtid_strict_mode=ON;

    C. no:关闭GTID功能。
  3. change master参数使用:change master to master_host='127.0.0.1', master_port=3306, master_user='rhxycopy', master_password='123456', master_use_gtid=slave_pos,注意第一次就为备机时是slave_pos,如果第一次为主机再变成备机需要用current_pos

    A. master_host:设置Master服务器的IP地址

    B. master_port:设置Master服务器中MariaDB的实例端口号;

    C. master_user:连接到Master服务器中MariaDB的账号;

    D. master_password:连接到Master服务器中MariaDB的密码;

    E. master_use_gtid:使用GTID复制协议;

    F. master_connect_retry:连接到Master服务器中MariaDB的超时等待时间,默认60s;

    G. master_retry_count:连接到Master服务器中MariaDB的最大连接次数,默认86400,设置为0表示无限制;

    H. master_dely:表示Slave至少落后Master的复制时间,默认为0。

   4. 注意点

    A. 自增长:show session variables like'%auto_inc%';

    B. 配置奇偶交叉步长:auto_increment_increment = 2,auto_increment_offset = 1;

    C. 复制过程错误跳过机制:slave_skip_errors=1062,1032,1062代表键是重复条目,1032代表无法找到记录。

 

三、主从延迟

   1. show slave status查看同步延迟时间Seconds_Behind_Master,单位秒;

   2. slave_parallel_threads代表复制线程个数,读取和重放两个过程使用多线程;

   3. shell读取主从同步延迟情况

#!/bin/bash
while true
do
    TIME_RESULT=`docker exec mariadb mysql -h127.0.0.1 -uroot -p123456 -e "show slave status\G;" | grep 'Seconds_Behind_Master'`
    echo -e "`date +%Y-%m-%d\ %H:%M:%S`${TIME_RESULT}"
    sleep 2
done

 

  可参考:MariaDB配置文件主要参数含义

 

二、主主

 

posted @ 2022-12-02 12:46  如幻行云  阅读(367)  评论(0编辑  收藏  举报