
配置环境
1)Master:172.7.4.51
OS:Redhat Enterprise 6.2
Mysql:MySQL-server-5.5.27-1.el6.i686.rpm、MySQL-client-5.5.27-1.el6.i686.rpm
Mysql服务配置文件:/etc/my.cnf
2)Slave:172.7.3.51
OS:Windows XP
Mysql:mysql-5.5.27-win32.msi
Mysql服务配置文件:C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini
A.在master端
1.修改mysql配置文件[mysqld]节点内容:
log-bin = mysql-bin #复制过程即Slave从Master端获取该日志再执行日志记录的操作
server-id = 1 #1代表master服务
binlog-do-db = backup #要同步的库backup
binlog-ignore-db = mysql #不同步的库,初始所有库默认为不同步,但为了明确最好加上
2.重启mysql服务,使配置生效。
3.添加要从slave服务器访问master服务器的有权限的帐号
登录mysql后执行(用户名:backup,密码:123456):
GRANT FILE ON *.* TO backup@172.7.4.51 IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO backup@172.7.4.51 IDENTIFIED BY '123456';
4.查看master状态信息
mysql> show master status;
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
| mysql-bin.000030 | 1,839 | backup |
通过mysqldump生成mytest的备份文件:dump.sql,如果不需要复制mydb之前的内容则可以不用备份,但slave上一定得有需要复制库的表结构(这里我们创建表test)
CREATE TABLE `test` (
`A` int(11) NOT NULL AUTO_INCREMENT,
`B` varchar(20) DEFAULT NULL,
PRIMARY KEY (`A`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
B.在slave端
1.修改mysql配置文件[mysqld]节点内容:
server-id = 2 #2代表slave服务
replicate-ignore-table = backup.tb2 #不同步backup库的tb2表
skip-slave-start #防止复制随着mysql启动而自动启动。即slave端的mysql服务重启后需手动来启动主从复制(slave start),最好加上,slave端数据库服务重启后手动启动slave比较安全
2.如果slave服务也同时作为另一个mysql服务的master服务,则配置文件[mysqld]节点内容还需要加上log-slave-updates,该参数可参阅手册说明: Normally, a slave does not log to its own binary log any updates that are received from a master server. This option tells the slave to log the updates performed by its SQL thread to its own binary log. For this option to have any effect, the slave must also be started with the --log-bin option to enable binary logging. --log-slave-updates is used when you want to chain replication servers. For example, you might want to set up replication servers using this arrangement: A -> B -> C Here, A serves as the master for the slave B, and B serves as the master for the slave C. For this to work, B must be both a master and a slave. You must start both A and B with --log-bin to enable binary logging, and B with the --log-slave-updates option so that updates received from A are logged by B to its binary log.
3.重启mysql服务,使配置生效
4.登录mysql并停止slave服务
mysql>slave stop;
5.设置与master服务器相关的配置参数(用到之前记录的master信息)
mysql>change master to master_host='172.7.4.51', master_user='backup', master_password='123456',MASTER_LOG_FILE='mysql-bin.000030',MASTER_LOG_POS=1432;
6.开启slave服务
mysql> slave start;
若在slave未停止的状态下启动slave服务,会产生错误: ERROR 1198 (HY000): This operation cannot be performed with a running slave; run STOP SLAVE first.
7.查看slave状态信息
mysql> show slave status;
保证Slave_IO_Running: Yes Slave_SQL_Running: Yes
测试主从复制
在master(172.7.4.51)中的test表中插入数据;
查看slave(172.7.3.51)中的test表中是否同步了数据;如果同步成功说明配置完成,否则查看mysql的error日志,分析具体原因;
