主机环境说明。
master1: 10.8.1.11
master2: 10.8.1.12
版本信息:
? ? [root@m1 ~]# mysql -V
? ? mysql ?Ver 14.14 Distrib 5.6.27, for Linux (x86_64) using ?EditLine wrapper
?
1、主库开启bin-log功能,配置server-id
?
修改my.cf配置文件,开启bin-log功能,配置server-id。
[root@m1 ~]# more /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[mysqld]
server-id = 1
datadir = /var/lib/mysql
log_bin = /var/lib/mysql/bin-log
socket = /var/lib/mysql/mysql.sock
slave_net_timeout = 60
log-slave-updates
slave-skip-errors=all
skip-name-resolve
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#salve-net-timeout默认是3600秒,缩短时间是为了防止双YES的假象
#(事实上我已遇到,参考地址:http://www.cnblogs.com/billyxp/p/3470376.html)
如果要指定同步或不同步哪些库,可使用如下参数
#binlog-do-db=osyunweidb #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
#binlog-ignore-db=mysql #不同步mysql系统数据库
?
至于这些参数的说明具体看手册。
?
红色的部分非常重要,如果一个MASTER 挂掉的话,另外一个马上接管。
紫红色的部分指的是服务器频繁的刷新日志。这个保证了在其中一台挂掉的话,日志刷新到另外一台。从而保证了数据的同步?
?
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_2015_11_17.sql
?
看下备份数据大小,确认备份成功。
? ? [root@m1 ~]# ls -l mysql_bak_2015_11_17.sql?
? ? -rw-r--r--. 1 root root 645327 Nov 18 06:27 mysql_bak_2015_11_17.sql
? ? [root@m1 ~]#?
?
?
6、解除锁表
?
mysql>unlock tables;
或直接quit退出即可。
?
7、从库开启bin-log功能,配置server-id
?
从库开启bin-log功能后,待会在主上在配置同步,互为主从就完成了。
[root@m2 ~]# vi /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[mysqld]
server-id = 2
datadir = /var/lib/mysql
log_bin = /var/lib/mysql/mysql-bin
socket = /var/lib/mysql/mysql.sock
slave_net_timeout = 60
log-slave-updates
slave-skip-errors=all
skip-name-resolve
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2
sql_mode=N