当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > 实现两台MySQL数据库数据的同步的方法

Linux服务器
linux下用cron定时执行任务的方法
.htaccess绑定域名到子目录的方法
linux apache下虚拟主机配置方法
apache 局域网访问配置方案
linux Apache服务器系统安全设置与优化
linux中mac地址绑定方法
linux托盘不断闪烁之解决方法
Apache配置 虚拟转向实例
Apache No space left on device的解决办法
Apache rewrite的重写相关的参数说明
LINUX入门级常用命令20条整理
Ubuntu设置开机自动挂载所有格式硬盘分区
5个可能被你忽略的Linux安全设置方法
学习Apache的mod rewrite、access写法
改版时保留原链接,创建新的URL的方法
rsync中文手册之使用rsync实现网站镜像和备份linux
rsync 数据同步使用详解
linux URL的301重定向代码分析
eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置数据库连接池
Apache服务器二级域名的完美实现

Linux服务器 中的 实现两台MySQL数据库数据的同步的方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-04   浏览: 52 ::
收藏到网摘: n/a

做开发的时候要做Mysql的数据库同步,两台安装一样的系统,都是FreeBSD5.4,安装了Apache 2.0.55和PHP 4.4.0,Mysql的版本是4.1.15,都是目前最新的版本。
1. 安装配置
两台服务器,分别安装好Mysql,都安装在 /usr/local/mysql 目录下(安装步骤省略,请参考相关文档),两台服务器的IP分别是192.168.0.1和192.168.0.2,我们把192.168.0.1作为master数据库,把192.168.0.2作为slave服务器,我们采用单向同步的方式,就是master的数据是主的数据,然后slave主动去master哪儿同步数据回来。
两台服务器的配置一样,我们把关键的配置文件拷贝一下,默认的配置文件是在 /usr/local/mysql/share/mysql目录下,分别有 my-large.cnf, my-medium.cnf, my-small.cnf等几个文家,我们只是测试,使用my-medium.cnf就行了。mysql安装完后,默认的配置文件是指定在数据库存放目录下的,我们用的是4.1.X的,所以配置文件就应该在 /usr/local/mysql/var 目录下,于是把配置文件拷贝过去:
cp /usr/local/mysql/share/mysql/my-medium.cnf /usr/local/mysql/var/my.cnf两台服务器做相同的拷贝配置文件操作。
2. 配置Master服务器
我们要把192.168.0.1配置为主mysql服务器(master),那么我们就要考虑我们需要同步那个数据库,使用那个用户同步,我们这里为了简单起见,就使用root用户进行同步,并且只需要同步数据库abc。
打开配置文件:
vi /usr/local/mysql/var/my.cnf找到一下信息:
# required unique id between 1 and 2^32 - 1PHPChina 开源社区门户D%wM/x-Y3U_$zs# defaults to 1 if master-host is not setg~8FPv9W37313# but will not function as a master if omitted
ML.?K
? NZoW37313server-id = 1 //1为master,2为salve添加两行:
sql-bin-update-same //同步形式PHPChina 开源社区门户U$m:}s'vbinlog-do-db = abc //要同步的数据库重启192.168.0.1的mysql服务器:
/usr/local/mysql/bin/mysqladmin shutdownPHPChina 开源社区门户0w+g!?&P0d U u#Mb i/usr/local/mysql/bin/mysqld_safe --user=mysql &3. 配置Slave服务器
我们的slave服务器主要是主动去master服务器同步数据回来,我们编辑配置文件:
vi /usr/local/mysql/var/my.cnf找到下面类似的信息:
# required unique id between 1 and 2^32 - 13FS8oOn lj8o37313# defaults to 1 if master-host is not setPHPChina 开源社区门户9UO7X"TRT
Gb$Ku# but will not function as a master if omittedcwO @8pmw37313server-id = 1把上面的server-id修改为2,同时添加一些信息:
server-id = 2 //本Mysql是slave服务器.h wjC9C'Hu37313master-host = 192.168.0.1 //master服务器的IPPHPChina 开源社区门户}~q ~Q_master-user = root //连接master服务器的用户PHPChina 开源社区门户*_B\9n(tmaster-password = '' //连接master服务器的密码PHPChina 开源社区门户6O&Ys;rUEmaster-port = 3306 //连接端口S@.@"N&Sb K37313master-connect-retry = 10 //重试次数4`']w^0qW;N2J37313replicate-do-db = abc //要同步的数据库PHPChina 开源社区门户`,Q/C?$hC*llog-slave-updates //同步的形式重启192.168.0.2的mysql服务器:
/usr/local/mysql/bin/mysqladmin shutdownPHPChina 开源社区门户.wh1]^~!|V$B0\/usr/local/mysql/bin/mysqld_safe --user=mysql &4. 测试安装
首先查看一下slave的主机日志:
cat /usr/local/mysql/var/xxxxx_err (xxx是主机名)检查是否连接正常, 看到类似这样的信息就成功了
051031 11:42:40 mysqld startedPHPChina 开源社区门户W2l0Com R[^ b9S-Rib051031 11:42:41 InnoDB: Started; log sequence number 0 43634PHPChina 开源社区门户UqT7y!Df$c
ak"BL/usr/local/mysql/libexec/mysqld: ready for connections.PHPChina 开源社区门户;|0G|;vHFZ7}Version: '4.1.15-log' socket: '/tmp/mysql.sock' port: 3306 Source distributionPHPChina 开源社区门户(J9Z,Kg Lx%] i6OW051031 11:42:41 [Note] Slave SQL thread initialized, starting replication in log 'FIRST' PHPChina 开源社区门户Q9n-BU8[AYc LAat position 0, relay log './new4-relay-bin.000001' position: 4PHPChina 开源社区门户j v"jB\n7s*w051031 11:43:21 [Note] Slave I/O thread: connected to master '[email protected]:3306', ]-{eYn F5vK37313replication started in log 'FIRST' at position 4在Master查看信息
/usr/local/mysql/bin/mysql -u root查看master状态:
mysql> show master status;查看Master下mysql进程信息:
mysql> show processlist;在slave上查看信息:
/usr/local/mysql/bin/mysql -u root查看slave状态:
mysql> show slave status;查看slave下mysql进程信息:
mysql> show processlist;你再在master的abc库里建立表结构并且插入数据,然后检查slave有没有同步这些数据,就能够检查出是否设置成功。
最后,如果有兴趣的话,可以研究一下双击热备份,或者一台master,多台slave的同步实现。