日期:2014-05-16 浏览次数:20770 次
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)