mysql 同步,mysql同步之4

mysql同步之4 - 应用软件 - 电脑教程网

mysql同步之4

日期:2007-01-05   荐:
  手册来源:MySQL手册版本 5.0.20,出处:http://imysql.cn,转载请注明译者和出处,并且不能用于商业用途,违者必究。 6.8 同步启动选项 不管是master还是slave,都要设定 server-id 选项来确定使它们都有各自唯一的同步ID。必须选择 1 到 2^32-1 之间的正整数。例如: server-id=3。 关于master服务器上可用于控制二进制日志记录的选项详细描述请看"5.9.4 The Binary Log"。 下表描述了slave同步可用的选项,可以在命令行或者配置文件中设定它们。 一些slave同步选项以特定的方式来处理,在slave启动时,如果存在 `master.info` 文件并且包含这些选项,那么slave将略过它们。这些选项如下: * --master-host * --master-user * --master-password * --master-port * --master-connect-retry 从MySQL 4.1.1开始,一下选项也按照上述方式特殊处理: * --master-ssl * --master-ssl-ca * --master-ssl-capath * --master-ssl-cert * --master-ssl-cipher * --master-ssl-key 在MySQL 4.1.1中, `master.info` 文件的格式改变了以包含相应的SSL选项。另外,MySQL 4.1.1文件格式还包括了在第一行中的文件总行数。如果从旧版本升级到4.1.1,那么服务器启动时会自动升级 `master.info` 为新的格式。不过,如果是从4.1.1降级到旧版本,就需要在系统第一次启动时手工删除文件的第一行。注意,这种情况下,被降级的服务器就不能再使用SSL选项连接到master了。 slave启动时如果不存在 `master.info` 文件,它就使用在命令行或者配置文件中指定的参数值来启动。这在每次第一次启动slave服务器时都是这样,或者执行 RESET SLAVE 语句关闭且重启slave之后。 slave启动时如果存在 `master.info` 文件,那么它就略过这些选项,而是直接读取 `master.info` 文件中的值。 如果重启salve时使用的选项值和 `master.info` 中的不一样,那么这个新的值不会生效,因为slave服务器还是照样只读取 `master.info` 文件。想要使用不同的选项值,可以在删除 `master.info` 后重启slave或者使用 CHANGE MASTER TO 语句(推荐)重置选项值。 假定在 `my.cnf` 设定了以下选项值: [mysqld] master-host=some_host 第一次启动slave的时候,它从 `my.cnf` 中读取选项值,然后再把它们保存在 `master.info` 中。下次重启slave时,它就只读取 `master.info` 的内容而略过 `my.cnf` 中的选项值了。企图修改 `my.cnf` 来改变同步选项是不可行的,不过可以通过执行 CHANGE MASTER TO 语句来实现: 由于服务器认为 `master.info` 的优先级比配置文件高,因此建议根本不要在启动时附加同步选项,而只用 CHANGE MASTER TO 语句。详情请看"14.6.2.1 CHANGE MASTER TO Syntax"。 下例显示了一些配置slave的扩展选项: [mysqld] server-id=2 master-host=db-master.mycompany.com master-port=3306 master-user=pertinax master-password=freitag master-connect-retry=60 report-host=db-slave.mycompany.com 下列所述启动选项都是用来控制同步的:它们中的大部分都可以在运行时用 CHANGE MASTER TO 语句来改变。其他的,例如 --replicate-*,只能在salve启动时指定。我们打算在将来解决这个问题。 --log-slave-updates 通常,slave从master接收更新操作后并没有再把它们记录在二进制日志中。这个选项告诉slave的SQL线程要把这些更新操作记录在二进制日志中。想要这个选项起作用,需要同时启用 --log-bin 选项才能启用二进制日志。在使用同步链机制时,就需要使用 --log-slave-updates 选项。例如,可能需要设置如下同步关系: A -> B -> C 在这里,A当作B的master,B当作C的master。B同时是slave又是master,在A和B上都需要启用 --log-bin 选项,并且在B上还需要启用 --log-slave-updates 选项。 --log-warnings 让slave在执行同步时记录更多的错误日志。例如,它会通知你在网络/连接失败后重连成功,并且通知了每个slave线程如何启动的。这个选项在MySQL 4.0.19和4.1.12之后默认启用了;用 --skip-log-warnings 就可以禁用它。从MySQL 4.0.21和MySQL 4.1.3开始,除非这个选项的值大于1,否则放弃的连接不再记录在错误日志中。这个选项不只是用于限制同步,它产生的警告跨越了大部分操作。 --master-connect-retry=seconds 在master当机或者网络连接中断后,slave在重新连接到master之前休眠的秒数。如果在 `master.info` 文件中存在,就优先使用它。如果没有设置,默认是60。 --master-host=host master服务器的主机名或者ip地址。如果没有设置它,slave线程无法启动。如果存在的话,`master.info` 文件中选项值优先被读取。 --master-info-file=file_name slave记录master信息的文件名。默认名字是 `master.info`,放在数据文件目录下。 --master-password=password 用于被授权连接到master上运行同步的帐户密码。如果存在的话,`master.info` 文件中选项值优先被读取。如果没有设置,就当作是空密码。 --master-port=port_number master上舰艇的TCP/IP端口号。如果存在的话,`master.info` 文件中选项值优先被读取。如果没有设置,就当作预编译的设置。如果没有修改 configure 选项参数,那么就是3306。 --master-ssl,--master-ssl-ca=file_name,--master-ssl-capath=directory_name, --master-ssl-cert=file_name,--master-ssl-cipher=cipher_list,--master-ssl-key=file_name 用于设定用SSL安全连接到master的选项。它们的意义对应于"5.6.7.5 SSL Command-Line Options"中提到的 --ssl, --ssl-ca, --ssl-capath, --ssl-cert, --ssl-cipher, --ssl-key 选项。如果存在的话,`master.info` 文件中选项值优先被读取。这些选项是从MySQL 4.1.1之后开始可以用的。 --master-user=username 用于被授权连接到master上运行同步的帐户。这个帐户必须有 REPLICATION SLAVE 权限(在MySQL 4.0.2以前,则是 FILE 权限)。如果存在的话,`master.info` 文件中选项值优先被读取。如果没有设置,就当作是 test。 --max-relay-log-size=# 中继日志自动循环的大小。详情请看"5.2.3 Server System Variables"。这个选项是从MySQL 4.0.14之后才可以用的。 --read-only 这个选项令slave除了slave线程或者拥有 SUPER 权限用户之外的都不能更新数据。这能确保slave不会接受来自其他客户端的更新。这个选项是从MySQL 4.0.14开始有的。 --relay-log=file_name 中继日志的名字。默认名字是 host_name-relay-bin.nnn,host_name 是slave服务器的主机名,nnn 是指中继日志的顺序号。可以用这个选项创建不依赖主机名的中继日志,或者在中继日志越来越大(不想降低 max_relay_log_size 的值)且需要将它们放在非数据文件目录下,或者想使用磁盘间的负载均衡来提高速度等情况。 --relay-log-index=file_name 中继日志索引文件的位置及文件名。它的默认值是 host_name-relay-bin.index,host_name 是slave服务器主机名。 --relay-log-info-file=file_name slave上记录中继日志信息的文件名。默认是数据文件目录下的`relay-log.info`。 --relay-log-purge={0|1} 在不需要中继日志时禁用或启用自动清除。默认值是1(启用)。这是一个全局变量,可以用 SET GLOBAL relay_log_purge 来动态更改。这个选项从MySQL 4.1.1开始可以用。 --relay-log-space-limit=# 用于加大slave上中继日志的总大小(如果值为0表示"无限")。这在slave主机只有有限的空间时很有用。当达到这个限制后, I/O线程直到SQL线程删除一些无用的中继日志后才会继续从master读取二进制日志事件。注意,这个限制不是绝对的:在删除中继日志之前,SQL线程可能还需要更多的二进制日志事件。这种情况下,I/O线程会超越这个限制,直到SQL线程删除一些中继日志,因为如果不这么做的话就会导致死锁(在 MySQL 4.0.13之前就是这样)。不要设置 --relay-log-space-limit 的值小于2倍 --max-relay-log-size (如果 --max-relay-log-size 的值为0,则是 --max-binlog-size ) 的值。在这种情况下,由于已经超过 --relay-log-space-limit 了,I/O线程需要等待更多的剩余空间,但是SQL线程没有可以删除的中继日志来满足I/O线程的需求。这就会强制I/O线程暂时忽略 --relay-log-space-limit 限制。 --replicate-do-db=db_name 告诉slave只同步那些缺省数据库是 db_name (也就是用 USE 选中的)的语句。想要指定更多的数据库,只需多次使用该选项,每次指定一个数据库。注意,类似 UPDATE some_db.some_table SET foo='bar' 这样的跨库操作语句以及没有选中数据库的操作都不会被同步。如果必须使用跨库操作,要确保使用MySQL 3.23.28或更高,并且使用 --replicate-wild-do-table=db_name.% 选项。请仔细阅读最后面的注意事项。 下面是一个不能按照预期工作的例子:如果启动slave时使用 --replicate-do-db=sales 选项,并且在master上执行下列语句,那么这个 UPDATE 语句不会被同步: USE prices; UPDATE sales.january SET amount=amount 1000; 如果需要同步跨库操作,只需使用 --replicate-wild-do-table=db_name.% 选项。这个"只检查缺省数据库"特性的主要原因是因为想要单从一个语句中判断是否要被同步比较困难(例如,使用多表 DELETE 或者 UPDATE,这就跨库了)。不过想要检查是否是缺省数据库却很快。 --replicate-do-table=db_name.tbl_name 告诉slave只同步那些指定的数据表。想要指定更多的数据表,只需多次使用该选项,每次指定一个数据表。这个选项支持跨库更新,和 --replicate-do-db 选项相反。请仔细阅读最后面的注意事项。 --replicate-ignore-db=db_name 告诉slave不要同步那些缺省数据库是 db_name (也就是用 USE 选中的)的语句。想要指定更多的数据库,只需多次使用该选项,每次指定一个数据库。如果有跨库操作且希望这些操作要被同步就不要使用该选项。请仔细阅读最后面的注意事项。 下面是一个不能按照预期工作的例子:如果启动slave时使用 --replicate-ignore-db=sales 选项,并且在master上执行下列语句,那么这个 UPDATE 语句不会被同步: USE prices; UPDATE sales.january SET amount=amount 1000; 想要让跨库操作能正常同步,只需使用 --replicate-wild-ignore-table=db_name.% 选项。 --replicate-ignore-table=db_name.tbl_name 告诉slave不要同步指定数据表的任何更新语句(甚至用同一个语句更新的其他表)。想要指定更多的数据表,只需多次使用该选项,每次指定一个数据表。这个选项支持跨库更新,和 --replicate-ignore-db 选项相反。请仔细阅读最后面的注意事项。 --replicate-wild-do-table=db_name.tbl_name 限制slave只同步那些匹配指定模式的数据表。模式中可以包含通配符 `%` 和 `_`,它们的含义和 LIKE 模式一样。想要指定更多的数据表,只需多次使用该选项,每次指定一个数据表。请仔细阅读最后面的注意事项。 例如: --replicate-wild-do-table=foo%.bar% 会同步所有以 foo 开头的数据库下的以 bar 开头的数据表上的更新操作。 如果匹配模式是 %,则匹配所有的表名,且应用到数据库级语句(CREATE DATABASE, DROP DATABASE,和 ALTER DATABASE)。例如,使用 --replicate-wild-do-table=foo%.% 选项的话,所有匹配 foo% 模式的数据库级操作都会被同步。 如果想要在数据库/表模式中包含原义通配符,需要用反斜杠来转义它们。例如,想要同步 my_own
标签: