关于主从复制:mysql主从复制实现方法

7次阅读

共计 2263 个字符,预计需要花费 6 分钟才能阅读完成。

  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 找到正文的这一行

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 root@10.88.1.184:/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;

次要查看项:

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};

正文完
 0