【3】mysql复制的日常管理维护,mysql复制常见问题处理

【1】复制的日常管理

#复制的日常管理与维护

  (1.1)show slave status\G :在从库查看从库线程状态

  (1.2)flush tables with read lock;  :主从不一致后锁表。

    然后 show master status\G

    然后 show slave status\G 来查看从库同步状态 或者重新 change master to....

    然后 select master_pos_wait('mysql-bin.00002','389'); (即刚刚show master status找到的文件及位置),如果为1 标识超时退出 ,如果为1 则标识主从同步。

    最后再主库 unlock tables; 解锁

  (1.3)跳过错误

复制代码
复制代码
跳过错误有两种方式:
1.跳过指定数量的事务:(建议如果已经出现了错误,使用这种办法)
mysql>slave stop;
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1        #跳过一个事务
mysql>slave start

2.修改mysql的配置文件,通过slave_skip_errors参数来跳所有错误或指定类型的错误(建议配置时使用这种办法)
vi /etc/my.cnf
[mysqld]
#slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误,DDL错误类型包含 1007,1008,1050,1051,1054,1060,1061,1068,1091,1146(5.6可以用这个)
#slave-skip-errors=ddl_exist_errors #跳过DDL错误,all:跳过所有错误(mysql5.7才有ddl_exist_errors)
复制代码
复制代码

   (1.4)大对象blog ,text 传输

    

扫描二维码关注公众号,回复: 7068751 查看本文章

  (1.5)多主复制时,自增变量冲突问题

    当有多主对应一个从库时(这里以2主1从为例),如果主库的表使用自动增长,那么多主复制该表到从时,可能会有主键冲突问题;

    因为默认的系统auto_increment,其 auto_increment_increment 和 auto_increment_offset 均为1.

    (1.5.1)为了解决这个问题,可以在两个主库交错设置主键初始值,然后设置相同步长。比如:

      A主库,设置ID=1为初始值,步长设置为2,那么自增下来就是 1,3,5,7

      B主库,设置ID=2为初始值,步长设置为2,那么自增下来就是 2,4,6,8

    这样就不会导致从库主键冲突了。

    (1.5.2)使用分布式主键处理方案

    (1.5.3)分库分表方案

1. select @@identity;
2. select last_insert_id();

多人同时写的话,不会相互影响。LAST_INSERT_ID();  是 connection 级的变量,各个不同连接相互之间不影响

其实不加事务也可以。
案例:
start transaction;
insert into login_log_tb(server_name) values ('服务器');
select LAST_INSERT_ID(); 
commit;

猜你喜欢

转载自www.cnblogs.com/gered/p/11388986.html
今日推荐