求助:LINUX环境下实现MYSQL同步
高手指教指教,提供些完整步骤.谢谢
同步到哪?
没做过,记得好像Mysql中文手册里面讲到了。
就是两台服务器之间做MYSQL同步
有三种方法:1.用mysql自带的同步功能(效果不知如何) 2. 编写脚本实现 3.采用第三方软件实现 前2种具体能否实现要看自己了
关于mysql实现双机热备实现办法
今天才写的.做个项目要用.已经在自己家的环境中实现了.但是心里没什么底.上来看看,正好看到有朋友问这方面的问题,所以发上来参考一下,也请大家找找行病.谢谢了.我水平一般.入行不久.大家多关照.我知道mysql实现双机热备是通过同步日志实现的,这样的方法有什么不好呢?如果日志过大的话,万一master或者slave出现问题,同步会不会出现问题?MySql数据库同步复制20060114-v1.1
一,cluster模式配置数据库同步复制功能的设置都在mysql的设置文件中体现。主要工作原理为slave端记录并且执行master端的操作日志.mysql的配置文件(Linux下为/etc/my.cnf)
1、实施环境: 操作系统:2台linux AS 4,完全安装. Mysql为本机rpm.版本为4.17 SvrA ip:192.168.0.111 SvrB ip:192.168.0.1122、配置方法1:主从模式[Master->Slave]:A->B====step 1:配置同步的用户帐号====Step A:SvrA上配置Shell->service mysqld startShell -> mysql –u root 1.增加一个用户最为同步的用户帐号: Mysql> GRANT REPLICATION SLAVE ON *.* TO backup@'192.168.0.112' IDENTIFIED BY '123456'; 2.增加一个数据库作为同步数据库: Mysql>create database backup;Step B:SvrB上配置Shell->service mysqld startShell -> mysql –u root 1.增加一个用户最为同步的用户帐号: Mysql> GRANT REPLICATION SLAVE ON *.* TO backup@'192.168.0.111' IDENTIFIED BY '123456'; 2.增加一个数据库作为同步数据库:Mysql>create database backup;关闭MYSQL 数据库。 ====step 2:配置Master、Slave参数====== 主从模式:A->B SvrA为master ,SvrB为slave1.修改SvrA 中mysql的my.cnf文件。#vi /etc/my.cnf在mysqld配置项中加入下面配置:server-id=1log-binbinlog-do-db=backup(此处数据库名为举例,可设置多个库,根据需求在此处按此格式添加)log_err=my-err.logmax_binlog_size=104857600 配置完后重起数据库服务。用show master status 命令看日志情况。mysql> show master status;1.修改SvrB中 mysql的my.cnf文件。#vi /etc/my.cnf在mysqld配置项中加入下面配置:server-id=2master-host=192.168.0.111master-user=backupmaster-password=123456master-port=3306master-connect-retry=60replicate-do-db=backupbinlog-do-db=backup
====step 3:启动数据库和数据复制====启动SLAVE从数据库:Shell->service mysqld startShell -> mysql –u rootMysql>slave stop; #暂停slave从master同步数据.启动MASTER从数据库:Shell->service mysqld startShell -> mysql –u root回到SLAVE从数据库终端:Mysql>start slave;设置完成,启动成功:此处最好重启mysql服务,重新启动方法:#service mysqld restart 注:有时候会启动失败,可采用下面启动方法#usr/bin/mysqladmin –u root shutdown #关闭数据库#usr/bin/mysqld_safe & #启动数据库查看是否启动同步复制线程:Mysql>show slave status;| Waiting for master to send event | 192.168.0.111 | backup | 3306 | 30 | l2-bin.000014 | 79 | l1-relay-bin.000019 | 159 | l2-bin.000014 | Yes | Yes | backup | | | | | | 0 | | 0 | 79 | 159 | None | | 0 | No | | | | | | 12 |如果不同步的解决办法:在master执行Mysql>show master status;+---------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+---------------+----------+--------------+------------------+| l2-bin.000014 | 79 | backup | |+---------------+----------+--------------+------------------+注意master中显示的记录点位置和正在记录的日志文件名,在slave中执行:Mysql>change master to master_log_file='mysql.000014', MASTER_LOG_POS=79;Mysql>quit#service mysqld restart #重启master和slave的mysql.未成功的话执行:#/usr/bin/mysqladmin –u root shutdown#/usr/bin/mysqld_safe &
二.双机热备配置配置双机方法其实就是在上述的cluster基础上略加改动,既在从机上做主机配置,在主机上做从机配置。具体方法如下:SvrA ip:192.168.0.111 SvrB ip:192.168.0.112
在确定cluster模式配置成功后(确认方法上面有详述),关闭master(SvrA)数据库:#service mysqld stop#vi /etc/my.cnf在配置文件中加入:master-host=192.168.0.112 ###设置主机IP地址master-user=backup ###设置主机同步库用户名master-password=123456 ###设置主机同步库密码replicate-do-db=backup ###设置主要同步数据库master-connect-retry=60 ###设置心跳时间(库同步间隔)log_err=my-err.log ###同步错误日志完成后保存退出.启动: #service mysqld start或者: #/usr/bin/mysql –u root配置slave(SvrB)端/etc/my.cnf,加入以下内容:#vi /etc/mycnfbinlog-do-db=backuplog-bin=my_log重启mysql服务:#Service mysqld restart在SvrA执行:Mysql>start slave;Mysql>show slave status;------------+| Waiting for master to send event | 192.168.0.112 | backup | 3306 | 60 | my_log.000024 | 79 | l2-relay-bin.000010 | 4 | my_log.000024 | Yes | Yes | backup | | | | | | 0 | | 0 | 79 | 4 | None | | 0 | No | | | | | | 2741 |
在SvrB执行:;mysql> show master status;+---------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+---------------+----------+--------------+------------------+| my_log.000024 | 79 | backup | |+---------------+----------+--------------+------------------+1 row in set (0.00 sec)对比以上信息,日志记录文件名,同步数词库名和日志记录点,如果无误代表现在SvrB已经可以做为SvrA的master运行.但它本身也同时在做为SvrA的slave来运行.在SvrA执行:Mysql>show master status;+--------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+--------------+----------+--------------+------------------+| mylog.000009 | 4 | backup | |+--------------+----------+--------------+------------------+1 row in set (0.00 sec)在SvrB执行mysql> show slave status;-------------+-----------------+-------------------+----------------+-----------------------+| Waiting for master to send event | 192.168.0.111 | backup | 3306 | 60 | mylog.000009 | 4 | l1-relay-bin.000003 | 313 | mylog.000009 | Yes | Yes | backup | | | | | | 0 | | 0 | 4 | 313 | None | | 0 | No | | | | | | 3575 |+----------------------------------+---------------+-------------+-------------+1 row in set (0.00 sec)对比以上SvrA和SvrB中的主机ip,同步数词库,同步日志文件名,同步日志记录点.确认无误后完成.注意:在对mysql进行配置后,master端var/lib/mysql/下生成的master.info内容可能会不正确。可能会导致的错误是在将SvrA配置成slave时执行slave start出现大概意思为:“本机未配置成slave服务器,请更改config文件或者执行change master to命令…”的提示,解决办法为:#Vi /var/lib/mysql/master.info14mylog.000007 ###同步后要记录的日志文件79 ###日志记录点192.168.0.111 ###主机IPBackup ###同步数据库123456 ###同步数据库密码3306 ###同步端口60 ###心跳时间(同步间隔)0核对以上信息是否配置正确,为了更真实的测试同步准确性,建议在库中导入数据进行测试.以上mysql cluster模式和双机热备模式配置基本完成.
点错了不好意思了!写的很好,谢谢你,以后多交流交流
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(6)
同步到哪?
没做过,记得好像Mysql中文手册里面讲到了。
就是两台服务器之间做MYSQL同步
有三种方法:1.用mysql自带的同步功能(效果不知如何) 2. 编写脚本实现 3.采用第三方软件实现 前2种具体能否实现要看自己了
关于mysql实现双机热备实现办法
今天才写的.做个项目要用.已经在自己家的环境中实现了.但是心里没什么底.上来看看,正好看到有朋友问这方面的问题,所以发上来参考一下,也请大家找找行病.谢谢了.我水平一般.入行不久.大家多关照.我知道mysql实现双机热备是通过同步日志实现的,这样的方法有什么不好呢?如果日志过大的话,万一master或者slave出现问题,同步会不会出现问题?
MySql数据库同步复制20060114-v1.1
一,cluster模式配置
数据库同步复制功能的设置都在mysql的设置文件中体现。主要工作原理为slave端记录并且执行master端的操作日志.mysql的配置文件(Linux下为/etc/my.cnf)
1、实施环境:
操作系统:2台linux AS 4,完全安装.
Mysql为本机rpm.版本为4.17
SvrA ip:192.168.0.111
SvrB ip:192.168.0.112
2、配置方法
1:主从模式[Master->Slave]:A->B
====step 1:配置同步的用户帐号====
Step A:SvrA上配置
Shell->service mysqld start
Shell -> mysql –u root
1.增加一个用户最为同步的用户帐号:
Mysql> GRANT REPLICATION SLAVE ON *.* TO backup@'192.168.0.112' IDENTIFIED BY '123456';
2.增加一个数据库作为同步数据库:
Mysql>create database backup;
Step B:SvrB上配置
Shell->service mysqld start
Shell -> mysql –u root
1.增加一个用户最为同步的用户帐号:
Mysql> GRANT REPLICATION SLAVE ON *.* TO backup@'192.168.0.111' IDENTIFIED BY '123456';
2.增加一个数据库作为同步数据库:
Mysql>create database backup;
关闭MYSQL 数据库。
====step 2:配置Master、Slave参数======
主从模式:A->B SvrA为master ,SvrB为slave
1.修改SvrA 中mysql的my.cnf文件。
#vi /etc/my.cnf
在mysqld配置项中加入下面配置:
server-id=1
log-bin
binlog-do-db=backup(此处数据库名为举例,可设置多个库,根据需求在此处按此格式添加)
log_err=my-err.log
max_binlog_size=104857600 配置完后重起数据库服务。
用show master status 命令看日志情况。
mysql> show master status;
1.修改SvrB中 mysql的my.cnf文件。
#vi /etc/my.cnf
在mysqld配置项中加入下面配置:
server-id=2
master-host=192.168.0.111
master-user=backup
master-password=123456
master-port=3306
master-connect-retry=60
replicate-do-db=backup
binlog-do-db=backup
====step 3:启动数据库和数据复制====
启动SLAVE从数据库:
Shell->service mysqld start
Shell -> mysql –u root
Mysql>slave stop; #暂停slave从master同步数据.
启动MASTER从数据库:
Shell->service mysqld start
Shell -> mysql –u root
回到SLAVE从数据库终端:
Mysql>start slave;
设置完成,启动成功:此处最好重启mysql服务,重新启动方法:
#service mysqld restart 注:有时候会启动失败,可采用下面启动方法
#usr/bin/mysqladmin –u root shutdown #关闭数据库
#usr/bin/mysqld_safe & #启动数据库
查看是否启动同步复制线程:
Mysql>show slave status;
| Waiting for master to send event | 192.168.0.111 | backup | 3306 | 30 | l2-bin.000014 | 79 | l1-relay-bin.000019 | 159 | l2-bin.000014 | Yes | Yes | backup | | | | | | 0 | | 0 | 79 | 159 | None | | 0 | No | | | | | | 12 |
如果不同步的解决办法:
在master执行
Mysql>show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| l2-bin.000014 | 79 | backup | |
+---------------+----------+--------------+------------------+
注意master中显示的记录点位置和正在记录的日志文件名,在slave中执行:
Mysql>change master to master_log_file='mysql.000014', MASTER_LOG_POS=79;
Mysql>quit
#service mysqld restart #重启master和slave的mysql.未成功的话执行:
#/usr/bin/mysqladmin –u root shutdown
#/usr/bin/mysqld_safe &
二.双机热备配置
配置双机方法其实就是在上述的cluster基础上略加改动,既在从机上做主机配置,在主机上做从机配置。具体方法如下:
SvrA ip:192.168.0.111
SvrB ip:192.168.0.112
在确定cluster模式配置成功后(确认方法上面有详述),关闭master(SvrA)数据库:
#service mysqld stop
#vi /etc/my.cnf
在配置文件中加入:
master-host=192.168.0.112 ###设置主机IP地址
master-user=backup ###设置主机同步库用户名
master-password=123456 ###设置主机同步库密码
replicate-do-db=backup ###设置主要同步数据库
master-connect-retry=60 ###设置心跳时间(库同步间隔)
log_err=my-err.log ###同步错误日志
完成后保存退出.启动:
#service mysqld start
或者:
#/usr/bin/mysql –u root
配置slave(SvrB)端/etc/my.cnf,加入以下内容:
#vi /etc/mycnf
binlog-do-db=backup
log-bin=my_log
重启mysql服务:
#Service mysqld restart
在SvrA执行:
Mysql>start slave;
Mysql>show slave status;
------------+
| Waiting for master to send event | 192.168.0.112 | backup | 3306 | 60 | my_log.000024 | 79 | l2-relay-bin.000010 | 4 | my_log.000024 | Yes | Yes | backup | | | | | | 0 | | 0 | 79 | 4 | None | | 0 | No | | | | | | 2741 |
在SvrB执行:;
mysql> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| my_log.000024 | 79 | backup | |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
对比以上信息,日志记录文件名,同步数词库名和日志记录点,如果无误代表现在SvrB已经可以做为SvrA的master运行.但它本身也同时在做为SvrA的slave来运行.
在SvrA执行:
Mysql>show master status;
+--------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------+----------+--------------+------------------+
| mylog.000009 | 4 | backup | |
+--------------+----------+--------------+------------------+
1 row in set (0.00 sec)
在SvrB执行
mysql> show slave status;
-------------+-----------------+-------------------+----------------+-----------------------+
| Waiting for master to send event | 192.168.0.111 | backup | 3306 | 60 | mylog.000009 | 4 | l1-relay-bin.000003 | 313 | mylog.000009 | Yes | Yes | backup | | | | | | 0 | | 0 | 4 | 313 | None | | 0 | No | | | | | | 3575 |
+----------------------------------+---------------+-------------+-------------+
1 row in set (0.00 sec)
对比以上SvrA和SvrB中的主机ip,同步数词库,同步日志文件名,同步日志记录点.确认无误后完成.
注意:在对mysql进行配置后,master端var/lib/mysql/下生成的master.info内容可能会不正确。可能会导致的错误是在将SvrA配置成slave时执行slave start出现大概意思为:“本机未配置成slave服务器,请更改config文件或者执行change master to命令…”的提示,解决办法为:
#Vi /var/lib/mysql/master.info
14
mylog.000007 ###同步后要记录的日志文件
79 ###日志记录点
192.168.0.111 ###主机IP
Backup ###同步数据库
123456 ###同步数据库密码
3306 ###同步端口
60 ###心跳时间(同步间隔)
0
核对以上信息是否配置正确,为了更真实的测试同步准确性,建议在库中导入数据进行测试.以上mysql cluster模式和双机热备模式配置基本完成.
点错了不好意思了!
写的很好,谢谢你,以后多交流交流