LMLPHP后院

MySQL 使用新主从服务器设置复制技术

maybe yes 发表于 2018-08-12 20:03

MySQL 主从同步配置,使用新的主服务器和从服务器设置复制。

最简单,最直接的方法建立一个复制是使用新的主服务区和从服务器。

如果已经拥有想要导入到复制配置的另一个服务器的数据库备份文件,也可以使用这个方法建立一个新的服务。数据在导入到新的主服务时,会自动的复制到从服务。

在新的主从服务之间建立复制。

  • 配置 MySQL 主服务的一些必须配置项。
  • 启动 MySQL 主服务器。
  • 创建一个用户,用来复制。
  • 获取主服务的状态信息。
  • 在主服务器上解除读写锁定。UNLOCK TABLES。
  • 在从库上编辑 MySQL 配置。
  • 启动从数据库。
  • 在从库上执行 CHANGE MASTER TO 语句来设置主复制服务器的配置。

在每个从库上执行从库设置的步骤。

MySQL 使用原始数据文件创建一个数据快照技术

maybe yes 发表于 2018-08-12 16:41

MySQL 主从同步配置,使用原始数据文件创建数据快照。

如果数据库体量很大,复制原始数据文件比使用 mysqldump 更加有效,然后在每个从库上导入文件。当执行 INSERT 语句时,这种技术会跳过更新索引的开销。

使用这种方法与具有复杂缓存或记录算法的存储引擎中的表一起使用需要额外的步骤来生成完美的“时间点”快照:即使您已获得全局读锁定,初始复制命令可能会遗漏缓存信息和记录更新。 存储引擎如何响应这取决于其崩溃恢复能力。

当主从服务在 ft_stopword_file, ft_min_word_len,ft_max_word_len 上有不同的值且复制的表上有全文索引,这种方法可能不太可靠。

MySQL 使用 mysqldump 创建一个数据快照技术

maybe yes 发表于 2018-08-12 11:21

MySQL 主从同步配置,使用 mysqldump 创建数据快照。

一种方法在已存在的主数据库创建数据快照,使用 mysqldump 工具创建一个包含所有数据库的用来复制的转储文件。一旦创建完成,就可以在从数据库上导入这个文件开始复制进程。

下面示例备份所有数据库到一个文件名为 dump.db,导出过程中包含来 --master-data 参数,这个参数能够自动的添加 CHANGE MASTER TO 语句,从服务器需要这个语句开始复制进程。

$ mysqldump --all-databases --master-data > dump.db

如果不使用 --master-data,在导出的时候需要优先在一个单独的会话中手动的锁定表(使用 FLUSH TABLES WITH READ LOCK),然后退出或者在第二个会话中执行 UNLOCK TABLES 来释放锁。同样也必须要使用 SHOW MASTER STATUS 获取二进制日志文件的位置信息来匹配快照数据,在开始从服务器复制的时候使用这个信息来执行适当的 CHANGE MASTER TO 语句。

MySQL 获取复制主服务器二进制日志坐标技术

maybe yes 发表于 2018-08-12 10:28

MySQL 主从同步配置,获取复制主服务器的二进制日志文件坐标。

配置从服务器复制,必须提前确定主服务的当前二进制日志的坐标。从服务器启动复制进程的时候需要这些信息,从二进制日志中找到正确的点它才能启动处理事件。

在从服务想要开启复制进程开始同步前,如果主服务已经有数据,必须先停止在主服务上处理语句,然后获取当前二进制日志文件坐标并在主服务允许执行语句前导出数据。如果不停止主服务执行语句,导出的数据和获取的主服务的状态信息会不匹配,最终数据不一致或者毁坏从服务的数据库。

获取主服务的二进制日志坐标,如下步骤:

1. 在命令行开启一个会话连接到主服务,刷新所有表并阻止写入语句:

mysql> FLUSH TABLES WITH READ LOCK;

MySQL 创建同步复制用户技术

maybe yes 发表于 2018-08-12 10:02

MySQL 主从同步配置,创建同步复制用户。

从服务器连接到主服务器需要 MySQL 的用户名和密码,所以主服务器必须要设置用来同步的用户。一旦授予了 REPLICATION SLAVE 权限,任何用户都可以用来同步。可以为每个从服务器单独创建一个账户,也可以都使用同一个账户。

对于从库,连接使用的用户名和密码存储在文本文件 master.info 中。因此,建议为复制功能单独创建一个用户,以尽量减少和其他账户妥协的可能性。

创建用户使用 CREATE USER,授权使用 GRANT。创建一个只为同步复制使用的账户,只需授予 REPLICATION SLAVE 权限即可。

举例,创建一个用户 lmlphp,可以从任何主机连接到 lmlphp.com,在主服务器上执行以下语句即可,如下:

2024-04-24 12:02:46 1713931366 0.005607