mysql主从复制实现方法

  1. 准备好两台安装好了mysql的机器(安装在不同的机器上),如果是给予虚拟机复制的机器则需要修改/var/lib/mysql/auto.cnf 文件中的uuid 确保两台机器的uuid不一样
  2. 备份主库的数据到备库 两库一致
    在主库上执行(已有数据)
    执行命令

    mysqldump  -uroot -pBamboocloud@1234 -A  --master-data=2 --single-transaction -R -E --triggers --max-allowed-packet=64M >/tmp/full.sql

    将二进制文件导入到 /tmp/full.sql 中

打开vim /tmp/full.sql 找到注释的这一行
mysql主从复制实现方法_第1张图片

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000008', MASTER_LOG_POS=3050;
MASTER_LOG_FILE和MASTER_LOG_POS的值记录下来留作备份后面主从复制的时候要用到

然后将full.sql传输到备库所在的机器上

scp /tmp/full.sql [email protected]:/tmp

连接到备库的mysql

执行下列命令:
关闭二进制文件
同步数据
开启二进制文件

set sql_log_bin =0;
source /tmp/full.sql
set sql_log_bin =1;

此时数据同步完成

  1. 分别配置主备库的mysql配置文件

    server_id=1 #指定MySQL的id 
    log-bin=mysql-bin #开启二进制日志文件
    auto_increment_increment=2
    auto_increment_offset=1
    port=13306
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES -- sqlmode需要设置为非严格模式否则程序可能会报错 见https://www.cnblogs.com/zhoujinyi/p/8035413.html
    lower_case_table_names=1
    default-storage-engine = INNODB
    #  mysql 主从幂等模式
    slave_exec_mode=IDEMPOTENT
    #  跳过指定错误
    slave-skip-errors=1032,1062  #忽略错误
    
    # 更新快的表不同步先
    replicate-ignore-table=bim.qrtz_scheduler_state
    replicate-ignore-table=bim.tb_jgroupsping
  2. 配置主从
    a) 在主库上创建可供复制的特殊账号 创建语句如下
    GRANT REPLICATION SLAVE ON *.* to 'replication'@'%' identified by 'Bamboocloud@1234';
    然后在从库上执行下列sql;
CHANGE MASTER TO MASTER_HOST = '10.88.1.73', 
 MASTER_USER = 'replication',                    
MASTER_PORT =13306,                            
 MASTER_PASSWORD = 'Bamboocloud@1234',        
 MASTER_LOG_FILE = 'mysql-bin.000008',
 MASTER_LOG_POS = 3050;    

master_host是主服务器的ip
master_port=13306(这里没有配置,默认3306)
master_user:Master 服务器授权用户,也就是 Master 前面创建的那个用户
master_password:Master 服务器授权用户对应的密码
master_log_file:Master binlog 文件名
master_log_pos:Master binlog 文件中的 Postion 值 这个值代表从库从主库同步数据的节点(起点)

检查无误后则在从库可以开启线程

start slave;

然后检查状态

show slave status;

mysql主从复制实现方法_第2张图片

主要检查项:

slave_io_running 和 slave_sql_running 两个项,都为YES则代表成功了,这时候主库会同步数据到从库.

注意点

  1. 如果后续程序运行过程中show slave status;发现两个指标有一个为NO,则说明程序断开了,需要检查 /var/log 下的mysql的日志,查看报错的原因,可以在配置文件my.cnf中指定主从复制为幂等模式 并跳过指定的错误

    #  mysql 主从幂等模式
    slave_exec_mode=IDEMPOTENT
    #  跳过指定错误
    slave-skip-errors=1032,1062  #忽略错误
  2. 配置主主复制同主从,只不过是在主机(从机)上反向配置一遍即可.
    在相反的一台机器上给另外的一台机器配置可供主从复制的特殊账号

    GRANT REPLICATION SLAVE ON *.* to 'replication'@'%' identified by 'Bamboocloud@1234';

    用 show master status; 查看 master_log_file 和master_log_pos
    并在下列命令中替换即可

CHANGE MASTER TO MASTER_HOST = ${masterip},
MASTER_USER = ${masteruser},
MASTER_PORT = ${masterport},
MASTER_PASSWORD = ${masterpassword},
MASTER_LOG_FILE = ${master_log_file},
MASTER_LOG_POS = ${和master_log_pos};

你可能感兴趣的:(主从复制mysql数据库)