千家信息网

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

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章将为大家详细讲解有关mysqldump同步数据到生产的注意事项都有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.如果需要从一个实例把数
千家信息网最后更新 2024年11月23日mysqldump同步数据到生产的注意事项都有哪些

这篇文章将为大家详细讲解有关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同步数据到生产的注意事项都有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0