- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安网站维护基地 来源:黑客防线网安网站维护基地 浏览次数:0 |
MySql 数据库主从配置 一.MySql复制环境:原理: MySql复制是指将主数据库的ddl和dml语言操作通过二进制日志传到复制服务器上,然后在复制服务器上将这些日志文件重做,从而使得从服务器和主服务器的数据保持同步!
目的:方便不停止数据库而备份主服务器,实现主从服务器数据同步!
现有两台机器A、B需要实施MySql的主从热备份,A作为主服务器,B作为从服务器
环境:Windows Server 2003、MySql5.5
A、B的操作系统一样,MySql版本均为5.5
A主服务器ip:192.168.2.2
B从服务器ip:192.168.2.3
二.MySql复制的优点:
1.如果主服务器上出现了问题可以切换到从服务器上
2.可以在从服务器上执行查询操作,降低主服务器的访问压力
3.可以在从服务器上进行备份,以避免备份期间影响主服务器的服务
三.MySql复制操作步骤:
1、主服务器授权
授权从服务器(192.168.2.3)可以连接主服务器(192.168.2.2)并进行更新。也就是在A服务器上添加一个MySql账号让B服务器(从)可以通过这个账号连接A服务器(主)的MySql并进行相关更新操作。 http://www.rongsen.com.cn
MySql> grant replication slave on *.* to 'rongsen.com.cn'@'192.168.2.3' identified by 'password';
Rekfan.com --- MySql用户名
192.168.2.3 --- 从服务器ip
Password --- MySql密码
注意:如果有多台丛机,就执行多次,只需更换从服务器的ip.
2、数据复制
建立好访问许可之后,接下来是从主服务器向从服务器复制数据。
在A服务器上有个rekfan_db数据库,我们现在假设以这个数据库来作同步,将A的
rekfan_db数据库复制到B服务器上,可以使用MySqldump工具
复制之后
A 服务器:(主服务器)
B 服务器:(从服务器)
现在A、B 服务器都有rekfan_db数据库了,复制完成
3、配置主服务器(A 服务器)
修改MySql 的配置文件my.ini,Linux下是(/etc/my.cnf)
找到server-id,给主服务器的server-id 指定一个值(注意:主服务器和从服务器的server-id的值不能相同)。另外还要在主服务器启动二进制日志,即在选项配置文件中添加log-bin启动选项。配置示例如下:
[MySqld]
# 主机标识,整数值(唯一),并不能与从服务器的值相同
server-id=1
#日志文件以mysql-bin 为前缀
log-bin = mysql-bin
#主机,读写都可以
read-only =0
#不需要备份的数据库,多个写多行(可选属性)
binlog-ignore-db=MySql
#需要备份数据,多个写多行(可选属性)
binlog-do-db=rekfan_db
注:这几个参数一定要放在[Mysqld]结点下,都是小写,如果大写,服务会启动不了,错误日志会有如下提示:
111012 16:52:24 InnoDB: 1.1.8 started; log sequence number 1595675
111012 16:52:24 [ERROR] C:Program FilesMySQLMySQL Server 5.5binmysqld: unknown variable 'Server-id=1'
111012 16:52:24 [ERROR] Aborting
配置好之后重启MySql服务器,在重启之后清空二进制日志(reset master 命令) http://www.rongsen.com.cn
运行show variables like '%server%'; 可以看到配置成功
4、配置从服务器(B 服务器)
修改从服务器的MySql配置文件my.ini文件。
[MySqld]
#唯一,并与主服务器上的server-id 不同。
server-id=2
#主服务器的主机名或者ip地址
master-host=192.168.10.110
#如果主服务器没有在默认的端口上监听,则需确定master-port选项的值
master-port=3306
#主服务器中创建的用户名和密码
master-user=rekfan.com
master-password=password
#复制操作要针对的数据库(可选,默认为全部)
replicate-do-db=rekfan_db
#不复制某个库
replicate-ignore-db=mysql
#如果主副服务器间连接经常失败,需增加master-retry-count 和master-connect-retry
#master-retry-count 连接重试的次数
#master-connect-retry 连接失败后等待的秒数
master-retry-count = 999
master-connect-retry = 60
注:Mysql版本从5.1.7以后开始就不支持“master-host”类似的参数;所以照上面的配置方法会启动不了MySql服务, 错误日志会有如下提示: http://www.rongsen.com.cn
111012 17:15:23 InnoDB: 1.1.8 started; log sequence number 1595675
111012 17:15:23 [ERROR] C:Program FilesMySQLMySQL Server 5.5binmysqld: unknown variable 'master-connect-retry=60'
111012 17:15:23 [ERROR] Aborting
排除些没有用的参数后,成如下的结构:
[mysqld]
server-id=2
replicate-do-db = rekfan_db
启动从服务器Mysql数据库,执行如下命令:
MySql> slave stop;
MySql> change master to master_host='192.168.2.2', master_user='rekfan.com', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=0;
MySql> slave start;
MySql> show slave status G ;
如果发现
Slave_IO_Running: NO
Slave_SQL_Running: Yes
查看错误日志:
C:Program FilesMySQLMySQL Server 5.5dataxxxxxx.err
会发现如下错误:
111012 17:19:23 [ERROR] Error reading packet from server: Could not find first log file name in binary log index file ( server_errno=1236)
111012 17:19:24 [ERROR] Got fatal error 1236: 'Could not find first log file name in binary log index file' from master when reading data from binary log
一般出现这个错误是因为
一是权限问题
二是文件路径不多,或文件名不一样,Mysql对大小写很敏感,执行change master to master_host='192.168.2.2', master_user='rekfan.com', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=0;语句的时候,master_log_file的mysql-bin前缀一定要与主服务器的log-bin配置的相 同! http://bolg.rekfan.com
Master.info 文件
在日志目录下有个master.info 文件,其中包含所有有关复制过程的信息(连接主服务
器的相关信息及与主服务器交换数据的相关信息)。
在初次启动以后,从服务器将检查这个master.info 文件,以得到相关信息。如果想
修改复制选项,删除master.info 并重启MySql服务,在启动过程中使用选项配置文件
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |