mysql主从同步

原理:

  master记录数据更改操作

    - 启用binlog日志
    - 设置binlog日志格式
    - 设置server_id

  slave运行2个线程

    - Slave_IO:复制master主机binlog日志文件里面的SQL到本机的relay-log文件里
    - Slave_SQL:执行本机的relay-log文件里的SQL语句,重现master的数据操作


构建:


  确保数据相同


  配置主服务器master

    1.修改/etc/my.cnf

[mysqld]
log_bin=master0    //启用binlog日志,并指定文件名前缀
server_id = 10 //指定服务器ID号
binlog-format='mixed'    //指定日志格式(row,statement,mixed)
View Code

    2.创建授权用户

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.4.%' IDENTIFIED BY 'pwd123';
View Code

    3.查看master同步状态(当前日志文件名、偏移位置)

mysql> SHOW MASTER STATUSG;
mysql> show slave hosts;                    # 查看当前从库
View Code

  

  配置从服务器slave

    1.修改/etc/my.cnf

[mysqld]
log_bin=slave1    //启动SQL日志,并指定文件名前缀
server_id = 20 //指定服务器ID号,不要与Master的相同
binlog-format='mixed'    
# log_slave_updates //允许级联复制,主从从结构使用
View Code

    2.连接master

mysql> CHANGE MASTER TO MASTER_HOST='192.168.4.10', # 主库对应的ip
-> MASTER_USER='repl',
-> MASTER_PASSWORD='pwd123',
-> MASTER_LOG_FILE='dbsvr1-bin.000001', //对应Master的日志文件
-> MASTER_LOG_POS=0; //对应Master的日志偏移位置
View Code

    3.启动slave

mysql> start slave;
View Code

    4.查看slave(IO和SQL线程的状态)

mysql> show slave statusG;
View Code

常用配置

  master服务器

    [mysqld]

    binlog_do_db=name      # 设置master对哪些库记录日志
    binlog_ignore_db=name    # 设置master对哪些库不记录日志

  slave服务器

    [mysqld]

    log_slave_updates     # 记录从库更新,允许链式复制(A—B—C)

    relay_log=file_name     # 指定中继日志文件名

    replicate_do_db=db_name    # 复制指定库,可设置多条

    replicate_ignore_db=db_name  # 不复制哪些库,与do-db 选一种即可        

原文地址:https://www.cnblogs.com/ray-mmss/p/10338250.html