最近因项目要求,在Linux服务器上设置mysql的数据同步,幸好网络资源多啊,google一下全有了,不过实际操作起来,就麻烦了,遇到很多问题,不过多google一下也解决了,同时学习了很多相关方面的知识,现将总结于此,以备后用,希望对有此需要的JE们有所帮助;一、准备环境自己做练习硬件资源少,只能在虚拟器上操作了哈哈!Linux 版本:Red Hat Enterprise Linux Server release 5.1MySQL 版本:MySQL-server-community-5.0.67-0.rhel5.i386.rpmMySQL-client-community-5.0.67-0.rhel5.i386.rpm(PS:mysql的同步机制是基于二进制日志binlog,不同的mysql版本会导致其格式的不同,从而导致不能实现数据同步,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者Slave的版本高于Master的版本,因为mysql是向下兼容的,为此Master的版本不能高于Slave版本,否则有可能不能实现功能;如果要实现双向同步,最好mysql是同一版本)虚拟机版本:VMware6.0在虚拟机上安装两个Linux系统,并分别安装上mysql(mysql安装在俺博客的mysql安装有详细说明)mysql默认安装的文件分别为: /var/lib/mysql/ (数据库目录,其所创建的数据库文件都在该目录下) /usr/share/mysql (mysql相关配置文件) /usr/bin (mysql相关命令,如mysql mysqladmin等)为了区分系统,给系统命名一下,便于后面的说名:LinuxA 系统: Ip:192.168.59.123 (Master)LinuxB 系统: Ip:192.168.59.124 (Slave)关闭LinuxA 和 LinuxB 的防火墙 #service iptables stop (保证系统互相可以ping的通)二、设置单向mysql数据同步(LinuxA(Master)->LinuxB(Slave))1、 LinuxA 为 masterLinuxB 为 slave (同步LinuxA 上mysql上指定的test数据库中的数据);由于刚安装的mysql,因此分别在LinuxA 和 LinuxB 的 mysql 上创建相同的数据库如 test(表有 stu , class,teacher),保证两个mysql上的数据库名一致其表名及表的结构一致,若有一个不同,将导致无法实现同步;(PS: 要使数据同步,必须保证数据库名一致其表名及表的结构一致)2、在作为master(即LinuxA)的mysql上建立一个账户专门用于slave(即LinuxB)来进行数据同步# mysql (默认用户,如设置了root密码,使用mysql -u root -p 登入mysql)mysql>grant file on *.* to backa@"192.168.59.124" identified by "backa"mysql>flush privileges;(PS:此backa账户只能通过ip为192.168.59.124的访问)在LinuxB上测试账户backa是否可以访问LinxuA上的mysql:#mysql -u backa -p -h 192.168.59.123(输入密码backa,可以访问说明设置正确)3、修改 my.cnf 文件由于刚安装的mysql ,在/etc目录下可能无my.cnf文件,从/user/share/mysql目录中拷贝my-medium.cnf 到/etc并修改成my.cnf (LinuxA 和LinuxB 上一样)如 # cp /user/share/mysql/my-medium.cnf /etc/my.cnf修改在LinuxA(Master)上的/etc/my.cnflog-bin=mysql-bin (日志文件,默认存在/var/lib/mysql下日志文件以mysql-bin为开头)#log_bin= /var/log/mysql/mysql-bin.log(也可以自己指定,在此用# 表示注释掉了)binlog-do-db =test(需要同步的数据库名,如需同步多个数据库,可以另起行如binlog-do-db =test1 )server-id= 1 (mysql标示)修改完后保存退出,并重启mysql 如#service mysql restart (重启正常,表示配置没错误)修改在LinxuB(Slave)上的/etc/my.cnfserver-id= 2 (mysql标示,唯一否则启动会出错误)master-host=192.168.59.123 (同步Master的ip地址)master-user=backa (同步所需的账号)master-password=backa (同步账号的密码)master-port=3306 (LinuxA 中mysql的访问端口)replicate-do-db=test (所需同步的数据库名,如果是同步多个数据库,可以另起一行如 replicate-do-db=test1)#replicate-do-table=test.stu (如果只需同步test数据库中的stu表)#replicate-do-table=test.teacher(如果只需同步test数据库中的stu表)master-connect-retry=60 (主服务器(Master)宕机或连接丢失的情况下,从服务器(slave)线程重新尝试连接主服务器之前睡眠的秒数)修改完后保存退出,并重启mysql 如#service mysql restart (重启正常,表示配置没错误)
Linux AS 4上升级Oracle 10.2.0.1.0到10.2.0.4.0的过程脱离Sun另起炉灶 MySQL将采用新的开发和发布模式相关资讯 mysql
- 数据库服务器 MySQL (08/15/2013 06:50:23)
- MySQL 5.6 GA 及逃亡潮 (02/08/2013 14:36:35)
- MySQL 5.5.22、5.1.62、5.0.96全线 (03/22/2012 19:03:49)
| - MySQL Administrator连接VMWare下 (05/24/2013 09:20:58)
- MySQL 5.1.68 发布 (02/05/2013 08:37:47)
- CentOS 5.2+MySQL+Heartbeat双机互 (01/29/2012 11:16:55)
|
本文评论 查看全部评论 (0)