mysqldump同步数据到生产的注意事项都有哪些

发布时间:2021-10-08 16:46:24 作者:柒染
来源:亿速云 阅读:160

这篇文章将为大家详细讲解有关mysqldump同步数据到生产的注意事项都有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1.如果需要从一个实例把数据倒进另一个生产的实例,那么需要注意:使用一下语句dump出来!

mysqldump  -uroot  -p -t  --single-transaction=true  --skip-disable-keys=false  --add-locks=false --set-gtid-purged=off    -B liuwenhe   --tables  r >/data/backup/r.sql

注释:

1)--set-gtid-purged=false  结果文件中不加 SET @@GLOBAL.GTID_PURGED,防止执行报错,因为reset master后才能执行SET @@GLOBAL.GTID_PURGED!

2)--skip-disable-keys=false 关闭ALTER TABLE `r` DISABLE KEYS这类的关闭索引键操作,否则线上可能索引失效!影响业务

3)--set-gtid-purged=false   结果文件中不带 SET @@SESSION.SQL_LOG_BIN= 0; 也就是说要写binlog,否则不能同步到从库!

4)--add-locks=false  不加 LOCK TABLES `acct_loan` WRITE; 尤其注意这个,lock之后,只能这个session来操作这个表,并且这个session还不能操作别的表,别的session不能操作该表,具体实验过程:(pxc和简单的主从是一样的效果!)

(实验1 关于 lock tables  r  write:

会话1:

root@localhost : liuwenhe 18:33:01>LOCK TABLES  r WRITE;

Query OK, 0 rows affected (0.00 sec)

root@localhost : liuwenhe 18:33:03>insert into   r  values (1000);  #可以操作r表,也可以查看

Query OK, 1 row affected (0.00 sec)

root@localhost : liuwenhe 18:33:09>insert into   t  values (1000);   #该session不可以操作t表

ERROR 1100 (HY000): Table 't' was not locked with LOCK TABLES

root@localhost : liuwenhe 18:33:15>select count(*) from  t;            #该session不可以查询别的表

ERROR 1100 (HY000): Table 't' was not locked with LOCK TABLES)

会话2:

root@localhost : liuwenhe 19:04:33>select count(*) from r;  #查询等待,

root@localhost : liuwenhe 18:39:21>insert into  r  values(10);  #dml等待,发现其他session不能操作session1 锁定的表!

root@localhost : liuwenhe 18:41:36>delete  from  yy2;   #发现会话2可以操作别的表

Query OK, 3 rows affected (0.04 sec)

oot@localhost : liuwenhe 19:05:32>select count(*) from yy2;    发现可读取r之外的表!

实验2 关于 lock  table  r read;

会话1:

root@localhost : liuwenhe 18:45:38>lock  table  r read;

Query OK, 0 rows affected (0.00 sec)

root@localhost : liuwenhe 18:47:17>select  count(*) from  t;   #发现不可以读取r之外的表

ERROR 1100 (HY000): Table 't' was not locked with LOCK TABLES

root@localhost : liuwenhe 18:47:51>delete  from  t;         #不可以操作r之外的表

ERROR 1100 (HY000): Table 't' was not locked with LOCK TABLES

root@localhost : liuwenhe 18:47:28>select  count(*) from  r;   #可以读取r表

+----------+

| count(*) |

+----------+

|        5 |

+----------+

1 row in set (0.00 sec)

root@localhost : liuwenhe 18:47:39>insert into  r values (10);   #不可以操作r表

ERROR 1099 (HY000): Table 'r' was locked with a READ lock and can't be updated

会话2:

root@localhost : liuwenhe 18:53:02>delete  from  t limit 1;   #会话2可以操作t表

Query OK, 1 row affected (0.01 sec)

root@localhost : liuwenhe 18:53:47>select count(*) from yy2;  #会话2可以查看其它表

+----------+

| count(*) |

+----------+

|        0 |

+----------+

1 row in set (0.00 sec)

root@localhost : liuwenhe 18:54:29>delete  from r;   #等待,不能操作session1锁定的表r

root@localhost : liuwenhe 18:55:20>select * from r;  #可以查看session1锁定表!

+------+

| id   |

+------+

|   10 |

总结:

lock tables  t  write:当前会话能读写该表,但是不能读写其它的表;其它会话可以读写其它的表,但是不可以读写该表;

lock  table  r read: 当前会话只能能读该表,但是不能操作该表,也不能读写其它的表,其它会话可读但不可写该表,可读写其它的表)

关于mysqldump同步数据到生产的注意事项都有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. Kettle+MongoDB 数据同步到MySQL
  2. kafka生产数据不能均匀到每个分区

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysqldump

上一篇:如何使用PHP时间戳strtotime()函数

下一篇:如何解决PHP页面中文乱码

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》