我的测试环境为实体机(192.168.1.232)作为主和一台虚拟机(192.168.1.63)作为从
在建立主从关系前,建议主机先清理下日志文件,因为主从关系是根据日志取得关联,
windows下放在mysql/data linux 下放在/var/lib/mysql,清理前可以先查看有什么日志
mysql命令行下运行清理:reset master
复制主服务器的数据库到从服务器的数据库中
1.通过授权grant命令添加从机用户
grant replication slave on *.* to ‘slave1’@’192.168.1.%’ identified by “123456”; //*.*表示所有数据库 所有表..%表示通配符.表示192.168.1.网段下的所有主机都能用此帐号登录
2.修改mysql配置文件
windows下的配置文件一般在根目录下名为my.ini .. linux 的配置文件一般在/etc/mysql下名为my.cnf
修改文件中 [mysqld]配置下的内容,.加入以下内容
server-id = 1 //唯一的一个数字,不能与从机重复,,主机建议设置为1
log-bin=mysql-bin //开启mysql的log日志,,
log-bin-index=master-bin.index //或许要加上
binlog-do-db = test //需要主从复制的表名,,实验证明以’,’号隔开会导致主从复制失败..需要多个数据库建议写成多行
binlog-ignore-db = mysql //忽略复制的表
到此主机的配置已经完成.第三步开始从机的配置
3.修改从机的mysql配置文件
server-id = 1 //唯一的一个数字,不能与从机重复,,主机建议设置为1
log-bin=mysql-bin //开启mysql的log日志,,
log-bin-index=master-bin.index //或许要加上
binlog-do-db = test //需要主从复制的表名,,实验证明以’,’号隔开会导致主从复制失败..需要多个数据库建议写成多行
binlog-ignore-db = mysql //忽略复制的表
4.建立从机与主机的关系,输入一下命令
change master to master_host=’192.168.1.232′,master_user=’slave1‘,master_password=’123456’, master_log_file=’mysql-bin.000001′,master_log_pos=1880;
master_host是主服务器ip地址
master_user,master_password是在服务器中创建的从机帐号密码
master_log_file,master_log_pos 是在主服务器中输入show master status中获取的信息
5.测试是否已经建立主从关系
在从机mysql命令下行输入 show slave status\G; 查看Slave_IO_Running: Yes Slave_SQL_Running: Yes,,若这两个值都为Yes则成功连接
6.测试数据是否同步
尝试在主机插入或修改数据..看从机的数据是否跟着修改
注意事项
mysql 默认是会启动开启slave..如果想设置启动不开启slave,在mysqld中加入 skip-slave-start
注意,,,不能在从机上修改同步的数据,,不然会造成同步失败,,需要从新同步!!!!
从新同步方法
1,从机mysql环境下
stop slave;
reset slave all;
清空要同步的表,重新导入主机的表
再次建立主从关系
change master to master_host=’192.168.1.232′,master_user=’slave1‘,master_password=’123456’, master_log_file=’mysql-bin.000002′,master_log_pos=120;
然后
start slave;
再测试是否同步成功
7.后续如何增加同步的数据库
7.1 修改主机和从机的数据库配置文件.加入需要同步的数据库
7.2 导出新加的数据库(有需要要加入只读锁,防止导出导入时..数据有变化)..并导入到从机的数据库中
7.3 重启主机mysql
7.4 主机mysql命令行下执行下面三行命令,第三行需要根据要求修改内容
stop slave
reset slave all
change master to master_host=’192.168.1.232′,master_user=’slave1‘,master_password=’123456’, master_log_file=’mysql-bin.000002′,master_log_pos=120;
7.5 重启从机mysql
7.6 进去到mysql命令行.start slave
7.7 完毕..检查是否同步成功
参考的基础知识文章
http://yunnick.iteye.com/blog/1845301