Mysql主从服务器搭建
为便于数据库的迁移,现搭建Mysql主从服务器搭建。
1.机器说明
10.15.62.209(主,ubuntu 12.04 64bit);
10.15.62.32(从,server 2008 64 bit)。
因为目前都在209上开发,所以,选择209作为主服务器。
2.Mysql版本
网上有说法:从服务器的mysql版本不能低于主服务器的mysql版本。
这里都使用了5.5.31(>5.1,网上常见的方法都只适用于5.1版本及以下)。
3.配置主服务器
(1)
vim /etc/mysql/my.cnf
去掉[mysqld]段中 server_id =1 和log_bin=/var/log/mysql/mysql-bin.log的#注释
加上 binlog-do-db = tcm
tcm就是要同步的数据库的名称,如果没有这一行,表示同步所有的数据.
另外 binlog_ignore_db = mysql。要表示忽略同步的数据库名称为mysql,如果有多个要指定同步或是忽略同步的数据,就配置多行,保存退出。
(2)创建一个复制用的账户(用户名和密码分别是slave32)
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave32'@'10.15.62.32' IDENTIFIED BY 'slave32';
FLUSH PRIVILEGES;
(3)重启mysql
sudo /ets/init.d/mysql restart
(4) 进入mysql,然后用 show master status 查看二进制日志的状态,看到类似以下的结果(记住加粗的部分):
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | tcm | |
+------------------+----------+--------------+------------------+
4.配置从服务器
(1)在mysql下找到my.ini文件,在其[mysqld] 下添加从服务器端配置:
server-id=2 #服务器 id ,不能和主服务器一致
replicate-do-db=tcm #待同步的数据库
(2)重启mysql
net stop mysql;
net start mysql;
(3)进入mysql,执行
CHANGE MASTER TO MASTER_HOST='10.15.62.209', MASTER_USER='slave32',Master_Port=3306,MASTER_PASSWORD='slave32',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107;
SLAVE START;
注意:上面的CHANGE语句中,MASTER_LOG_FILE和MASTER_LOG_POS就是上面中提到的show master status命令得到的结果,指定二进制文件的名称和开始同步的位置。
(4)查看SLAVE状态: show slave status\G
如果:Slave_IO_Running: Yes
Slave_SQL_Running: Yes
则表示正常。