MySQL复制
2012年11月18日
MySQL复制是指将一台数据库服务器上的数据往其它数据库上进行复制,可以做到将数据完整备份等。
下面是“主”-->“从”模式:
以两台数据库服务器之间的复制为例,一台为主服务器(Master),另一台为从服务器(Slave)。主服务器开启Dump进程,将数据库的二进制日志发往Slave,Slave主机的I/O进程获得该数据,并保存在Slave的中继日志(Relay log)里,Slave的SQL进程从中继日志中一次读取一句,并在服务器上执行。从而完成同步工作。数据库复制以异步方式工作,Master只负责把数据发送出去,并不保证Slave一定能收到。
配置过程如下:
Master:192.168.1.1
Slave:192.168.1.100
一、在Master和Slave上分别安装mysql-server(注意:Slave的服务器软件版本不能比Master的mysql-server软件版本低。);
# yum -y install mysql-server
# setenforce 0
# service iptables stop
二、在master和slave上分别创建数据目录,并启动服务;
# mysql_install_db --user=mysql --datadir=/mydata
# service mysqld start
三、修改配置文件/etc/my.cnf
# cp /usr/share/mysql/my-large.cnf /etc/my.cnf
在Master上做如下修改:
server-id=1
log-bin=mysql-bin #启用二进制日志
#在Slave上做如下修改:
log-bin=mysql-bin
server-id=10
relay-log=relay-bin #启用中继日志(默认没有这一句,要自己添加)
注意:Master和Slave的server-id一定不能一样,重启mysql
# service mysqld restart
四、进入数据库里面
# mysql -u root -p
#在Master机器上:
mysql> grant replication client,replication slave on *.* to repl@'192.168.1.%' identified by '123456'; #建立用户repl并分配相应权限
mysql> flush privileges;
mysql> show grants for repl@'192.168.1.%'; #查看刚建立的用户
#在Slave机器上:
mysql> change master to master_host='192.168.1.1',master_user='repl',master_password='123456';
mysql> start slave;
mysql> show slave status\G;
如果看到如下两行,代表复制进程已经开始正常工作了!
Slave_IO_Running: Yes Slave_SQL_Running: Yes
五、测试!
在Master上新建立一个数据库,可以发现Slave上很快也有了同样的一个数据库!
(不截图啦,大家自己玩去喽!!!)
提示,即使slave机器的mysql服务down掉,当再次启动slave数据库的时候,还是可以获得在down掉期间Master上新生成的数据。
已有 13 条评论 »