这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
zh:常见问题及解答:mysql主从复制 [2016/12/26 06:54] liuxl |
zh:常见问题及解答:mysql主从复制 [2017/12/12 03:05] (当前版本) |
||
|---|---|---|---|
| 行 5: | 行 5: | ||
| ==== 【master的my.cnf配置】 ==== | ==== 【master的my.cnf配置】 ==== | ||
| - | - 添加 log-bin=mysql-bin 启用二进制日志,master必须,slave可选。 | + | *设置启用二进制日志,master必须,slave可选,添加如下: |
| - | - 添加 server-id=1 可以是1,也可以取主机IP最后一段。 | + | |
| - | - 添加 binlog-do-db=ccupdate | + | <code>log-bin=mysql-bin</code> |
| - | - 添加 binlog-ignore-db=mysql | + | |
| + | *设置mysql服务器标识,可以是1,也可以取主机IP最后一段,添加如下: | ||
| + | |||
| + | <code>server-id=1</code> | ||
| + | |||
| + | *设置要推送的数据库binlog-do-db=ccupdate,添加如下: | ||
| + | |||
| + | <code>binlog-do-db=ccupdate</code> | ||
| + | |||
| + | *设置忽略mysql相关信息,添加如下: | ||
| + | |||
| + | <code>binlog-ignore-db=mysql</code> | ||
| ==== 【slave的my.cnf配置】 ==== | ==== 【slave的my.cnf配置】 ==== | ||
| - | - 添加 server-id=2 可以是2,也可以取从机IP最后一段,master、slave必须不一样。 | + | *设置mysql服务器标识,可以是2,也可以取从机IP最后一段,master、slave必须不一样,添加如下: |
| - | - 添加 replicate_wild_do_table=ccupdate.% | + | |
| - | - 添加 replicate_wild_ignore_table=mysql.% | + | <code>server-id=2</code> |
| + | |||
| + | *设置要更新的slave库,添加如下: | ||
| + | |||
| + | <code>replicate_wild_do_table=ccupdate.%</code> | ||
| + | |||
| + | *设置要忽略更新mysql相关信息,添加如下: | ||
| + | |||
| + | <code>replicate_wild_ignore_table=mysql.%</code> | ||
| ===== 二、在master服务器上建立授权帐户并授权。 ===== | ===== 二、在master服务器上建立授权帐户并授权。 ===== | ||
| - | 1、执行 grant replication slave on *.* to 'master'@'192.168.1.248' identified by '123456'; | + | 执行如下: |
| + | |||
| + | <code>grant replication slave on *.* to 'master'@'192.168.1.248' identified by '123456';</code> | ||
| <note tip>解决grant replication slave ont 操作提示密码PASSWORD(),执行: | <note tip>解决grant replication slave ont 操作提示密码PASSWORD(),执行: | ||
| 行 25: | 行 46: | ||
| <code>set old_passwords=0;</code>解决该问题。 | <code>set old_passwords=0;</code>解决该问题。 | ||
| </note> | </note> | ||
| - | ===== 三、登录master服务器的mysql控制台并配置。 ===== | + | |
| + | ===== 三、登录master服务器mysql控制台并配置。 ===== | ||
| {{:zh:常见问题及解答:selection008.png?750|}} | {{:zh:常见问题及解答:selection008.png?750|}} | ||
| - | - 执行 flush tables with read lock; 刷新所有表并且阻止其它写入。 | + | *刷新所有表并且阻止其它写入,执行如下: |
| - | - 执行 show master status; 查看主服务器主从状态,记录表中File、Position下的值。 | + | |
| - | - 此后不要再操作主服务器mysql,防止主服务器状态值变化,勿退出mysql防止read unlock发生。 | + | <code>flush tables with read lock;</code> |
| - | - 另开一个shell执行mysqldump -pastercc --databases astercc10 > astercc10.sql备份master的astercc10库并还原给slave的库mysql -pastercc < astercc10.sql。 | + | |
| + | *查看主服务器主从状态,记录表中File、Position下的值。 | ||
| + | |||
| + | <code>show master status;</code> | ||
| + | |||
| + | *此后不要再操作主服务器mysql,防止主服务器状态值变化,勿退出mysql防止read unlock发生。 | ||
| + | |||
| + | *另开一个shell备份master的astercc10库执行: | ||
| + | |||
| + | <code>mysqldump -pastercc --databases astercc10 > astercc10.sql</code> | ||
| + | |||
| + | *还原给slave的astercc10库执行: | ||
| + | |||
| + | <code>mysql -pastercc < astercc10.sql</code> | ||
| ===== 四、登录slave服务器的mysql控制台并配置。 ===== | ===== 四、登录slave服务器的mysql控制台并配置。 ===== | ||
| - | - 执行 change master to master_host='192.168.1.80',master_user='master', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=Position值(无引号); 使slave获得master的复制权限。 | + | *使slave获得master的复制权限,执行: |
| - | - 执行 start slave; 启动从服务器复制功能。 | + | |
| - | - 执行 show slave status\G 检查从服务器主从复制功能状态。 | + | <code>change master to master_host='192.168.1.80',master_user='master', master_password='123456', master_log_file='mysql-bin.000001', master_log_pos=Position值(无引号);</code> |
| - | - 其中参数Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 状态均为Yes。参数Last_IO_Errno: 0,Last_IO_Error:,Last_SQL_Errno: 0,Last_SQL_Error: ,无错误信息,则主从复制功能已经实现。 | + | |
| + | *启动slave服务器复制功能执行: | ||
| + | |||
| + | <code>start slave;</code> | ||
| + | |||
| + | *检查从服务器主从复制功能状态,执行: | ||
| + | |||
| + | <code>show slave status\G</code> | ||
| + | |||
| + | *其中参数 “Slave_IO_Running:” 和 “Slave_SQL_Running:” 状态均为 “Yes”。参数Last_IO_Errno: 0,Last_IO_Error:,Last_SQL_Errno: 0,Last_SQL_Error: ,无错误信息,则主从复制功能已经实现。 | ||
| {{:zh:常见问题及解答:selection009.png?750|}} | {{:zh:常见问题及解答:selection009.png?750|}} | ||
| + | |||
| + | *解锁master的tables | ||
| + | |||
| + | <code>unlock tables;</code> | ||
| <note tip>1、如果 master 用的 mysql5.6 , binlog_checksum 默认设置的是 “crc32”,并且 slave 用的 5.5 或者更早的版本,请将 master 的 binglog_checksum 设置为 none。 | <note tip>1、如果 master 用的 mysql5.6 , binlog_checksum 默认设置的是 “crc32”,并且 slave 用的 5.5 或者更早的版本,请将 master 的 binglog_checksum 设置为 none。 | ||