扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章将为大家详细讲解有关MySQLdump同步数据到生产的注意事项都有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联公司-专业网站定制、快速模板网站建设、高性价比泰山网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式泰山网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖泰山地区。费用合理售后完善,10余年实体公司更值得信赖。
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同步数据到生产的注意事项都有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流