MySQL主主同步详细操作过程

此处是在公司线上部署MySQL双主时所记录的文档,为安全,IP都改为内网IP。

版本信息:

#mysql -V

mysql  Ver 14.14 Distrib 5.5.37, fordebian-linux-gnu (x86_64) using readline 6.2

1、主库开启bin-log功能,配置server-id

修改my.cf配置文件,开启bin-log功能,配置server-id。

#cat /etc/mysql/my.cnf

[myqld]

server-id              = 1

log_bin                =/var/log/mysql/

slave-net-timeout      = 60 


#salve-net-timeout默认是3600秒,缩短时间是为了防止双YES的假象


#(事实上我已遇到,参考地址:

如果要指定同步或不同步哪些库,可使用如下参数

#binlog-do-db=osyunweidb  #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
#binlog-ignore-db=mysql    #不同步mysql系统数据库

2、确认bin-log与server-id是否开启:

查看命令 show variables like 'log_bin'; show variables like 'server_id';

mysql> show variables like 'log_bin';

+---------------+-------+

|Variable_name | Value |

+---------------+-------+

|log_bin      | ON  |

+---------------+-------+

1 rowin set (0.00 sec)

mysql>show variables like 'server_id';

+---------------+-------+

|Variable_name | Value |

+---------------+-------+

|server_id    | 1    |

+---------------+-------+

1 rowin set (0.00 sec)

3、创建复制授权用户

mysql> grant replication slave on *.* to replication@'%'identified by '123456'; #授权该用户对所有表都能进行复制

mysql>flush privileges;  #刷新权限

4、锁表,记录log-bin文件名和位置

mysql>flush tables with read lock;    #锁定所有表,此时数据库不能写入数据

QueryOK, 0 rows affected (0.05 sec)

mysql>show master status;      #查看最新bin-log文件及位置

+------------------------+------------+-------------------+-------------------------+

|File                  | Position  | Binlog_Do_DB      | Binlog_Ignore_DB        |

+------------------------+------------+-------------------+-------------------------+

|mysql-bin.000001      |  26314    |                  |                        |

+------------------------+------------+-------------------+-------------------------+

1row in set (0.00 sec)

5、锁表状态全备mysql数据

由于退出当前mysql登陆窗口,锁表功能就失效,需克隆一个会话进行全备。

#mysqldump-uroot -p -A -B >/tmp/mysql_bak_2014_10_30.sql.gz

看下备份数据大小,确认备份成功。

#ls  -l /tmp/mysql_bak_2014_10_30.sql.gz

-rw-r--r--1 root root 339222 10月 3011:01 /tmp/mysql_bak_2014_10_30.sql.gz

6、解除锁表

mysql>unlock tables;

或直接quit退出即可。

7、从库开启bin-log功能,配置server-id

从库开启bin-log功能后,待会在主上在配置同步,互为主从就完成了。

#cat /etc/mysql/my.cnf

[myqld]

server-id              = 2

log_bin                =/var/log/mysql/mysql-bin.log

slave-net-timeout      = 60 


#salve-net-timeout默认是3600秒,缩短时间是为了防止双YES的假象


#(参考地址:

#/etc/init.d/mysqlrestart

8、确认从库bin-log与server-id是否开启

查看命令 show variables like 'log_bin'; show variables like 'server_id';

mysql>show variables like 'log_bin';

+---------------+-------+

|Variable_name | Value |

+---------------+-------+

|log_bin      | ON    |

+---------------+-------+

1row in set (0.00 sec)

mysql>show variables like 'server_id';

+---------------+-------+

|Variable_name | Value |

+---------------+-------+

|server_id    | 2    |

+---------------+-------+

1row in set (0.00 sec)

9、从库导入主库的全备数据

在从库上解压数据。

#gzip-d mysql_bak_2014_10_30.sql.gz

登陆mysql导入数据

mysql>source /root/mysql_bak_2014_10_30.sql

10、记录从库bin-log信息

因为在从库导入全备数据时,此时主库与从库的内容是一致的,但是bin-log位置不一定一致。

mysql>show master status;      #查看最新bin-log文件及位置

+------------------------+------------+-------------------+-------------------------+

|File                  |Position  | Binlog_Do_DB      | Binlog_Ignore_DB        |

+------------------------+------------+-------------------+-------------------------+

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/69c7bf6c92bc829c0ee03c7d2346cf85.html