日期:2014-05-16  浏览次数:20770 次

mysql-5.6主从复制及遇到的错误

mysql的复制过程:每执行一个写操作,它都会往自己的数据库中存一份,与此同时这个写操作也会存储在二进制日志文件中一份,并且把它们保存为事件,所以在这个数据库上,前端数据每执行一个写操作或者有可能引起修改的操作,都会保存一个事件,我们就把这个事件通过mysql服务器3306端口发送给另外一台服务器,另外一台服务器把这个事件接收下来,接受下来以后先保存在本地的日志文件中,而后从这个日志文件中一次读一个事件并且在本地执行一下,然后保存在数据库里面,这个过程就叫mysql的复制。

安装mysql的过程就不讲了,直接开始我们的主从复制的配置过程:

1、 开启master和slave的二进制日志功能,也就是在mysql的主配置文件/usr/local/mysql/etc/my.cnf中,添加log_bin=mysql-bin,将master的server_id 设置为1,slave的server_id=2.

下面是master的配置文件

[root@localhost ~]# cat /usr/local/mysql/etc/my.cnf | grep -v ^#| grep -v ^$
[mysqld]
 server_id = 1
 log_bin=mysql-bin
 log-bin-index = mysql-bin.index
 log-error = /var/log/mysql/mysql-error.log
 general_log = 1
 general_log_file = /var/log/mysql/mysql.log
 user = mysql
 basedir = /usr/local/mysql
 datadir = /datadir
 port = 3306
 socket = /var/lib/mysql/mysql5.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

接下来是slave的配置文件

[root@wordpress ~]# cat /usr/local/mysql/etc/my.cnf | grep -
v ^# | grep -v ^$
[mysqld]
 server_id = 2
 log_bin=mysql-bin
 log-bin-index = mysql-bin.index
 general_log = 1
 general_log_file = /var/log/mysql/mysql.log
 log-error=/var/log/mysql/mysql.error
 basedir = /usr/local/mysql
 datadir = /database
 port = 3306
 socket = /var/run/mysqld/mysql.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

2、在主服务器上,设置一个从数据库的账户,使用REPLICATION SLAVE赋予权限

mysql> grant replication slave on *.* to 'tt'@'192.168.254.153' identified by '123456';
Query OK, 0 rows affected (0.06 sec)

mysql> show master status \G;                查看当前master的二进制日志状态和起始点
*************************** 1. row ***************************
             File: mysql-bin.000011
         Position: 330
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.01 sec)