mysql双机热备份
参考:http://www.cnblogs.com/brucexuyg/archive/2012/07/02/2573161.html
备份服务器:L服务器
1.1主服务器配置(W服务器上myql服务的配置)先配置W服务器上的mysql.ini信息,主要是在配置文件里[mysqld]节点下添加如下三行代码
log-bin=#二进制日志路径很重要,如果没有logs文件夹可以自己建立,默认在mysql-bin目录下,也可自己指定目录
server-id=1#主服务器ID,唯一性
binlog-do-db=MyDBName#需同步的数据库,如果没有本行,即表示同步所有的数据库
上面三行代码有时候在配置文件里面存在,只需把代码前面的“#”删除即可,添加完成上面三行代码,需要重启mysql服务.
接下来在W的mysql服务器上为L的mysql服务器添加一个专用的数据同步的用户帐号(repl),然后授权
grantreplicationslaveon*.*to'repl'@'192.168.0.210'identifiedby'123456';
之后通过命令myql–h192.168.0.200–uroot–psa进入数据库,查看master状态
Mysql>showmasterstatus;
可看到这里有两个状态变量,它们十分重要
mysql>SHOWMASTERSTATUS;
+--------------------+------------+---------------------+-------------------------+
|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|
+--------------------+------------+---------------------+------------------------+
|mysql-bin.003|73|MyDBName|mysql|
+--------------------+------------+---------------------+-------------------------+
注意File是mysql-bin.003而position是73
这个文件是对MyDBName这个数据库的二进制日志记录,记录数据变化的当前记录条数是73,对备份服务器非常重要,需要记住,后面要用到。
1.2备份服务器配置(L服务器上的myql服务的配置)在L服务器上打开mysql.cnf
在[mysqld]节点下添加如下内容
server-id=2
master-host=192.168.0.200#主服务器ip
master-user=repl#主服务器分配的用户名
master-password=123456#主服务器分配的用户名对应的密码
master-port=3306#主服务器mysql端口,默认3306
master-connect-retry=10#重复连接的次数
这里这样配置有时候可以,有时候会导致mysql服务无法启动,建议最好采用下面这种方式
在[mysqld]节点下添加如下内容
server-id=2
修改完成后,需要重启mysql服务。
然后通过命令行登录msyql(mysql–hlocalhost–uroot-ppwd)
Mysql>slavestop;#先停止slave服务
然后执行
Mysql>changemasterto
>master_host='192.168.0.200',
>master_user='repl',
>master_password='123456',
>master_log_file='mysql-bin.003',#上面主服务器查询的值,有用吧
>master_log_pos=73;#上面主服务器查询的值有用吧
正常执行之后,启动slave服务即可
Mysql>slavestart;
之后查看slave状态
Mysql>showslavestatus;能查看到信息,表示备份服务器设置成功。
接下来要做的工作就是测试主服务器数据库中表的字段信息修改后,备份服务器是不是会正常会被修改。
二、互为主从热备在第一节主从热备配置中可以实现W数据库服务器表中字段信息修改直接同步到L服务器的数据库中,实现主从热备。
在主从热备的基础上配置,互为主从热备,步骤差不多。
2.1主服务器配置:L服务器上的myql服务的配置在L数据库服务器上运行mysql命令
Mysql>showmasterstatus;
显示的信息为empty,没有记录,需要在配置文件mysql.cnf中的[mysqld]添加如下几行信息即可
log-bin=#可为空,也可写mysql-bin
binlog-do-db=MyDBName#待同步的数据库名称
binlog-ignore-db=mysql#忽略mysql数据库的同步
重启mysql服务
命令行执行Mysql>showmasterstatus;可以看到结果
mysql>SHOWMASTERSTATUS;
+--------------------+------------+---------------------+-------------------------+
|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|
+--------------------+------------+---------------------+------------------------+
|mysql-bin.001|106|MyDBName|mysql|
+--------------------+------------+---------------------+-------------------------+
表示设置成功,同时执行命令mysql>showslavestatus;
可以看到很多信息,表明设置成功。
2.2备份服务器的配置:W服务器上mysql服务的配置这里配置很简单,只需要执行mysql几个命令即可
通过命令行登录msyql(mysql–hlocalhost–uroot-ppwd)
Mysql>slavestop;#先停止slave服务
然后执行
Mysql>changemasterto
>master_host='192.168.0.210',#L服务器的IP
>master_user='repl',#L服务器为W服务器创建的同步账户
>master_password='123456',#L服务器为W服务器创建的同步账户的密码
>master_log_file='mysql-bin.001',#上面主服务器查询的值
>master_log_pos=106;#上面主服务器查询的值
正常执行之后,启动slave服务即可
Mysql>slavestart;
至此,mysql主从互为热备配置完成。类似的方法在网上搜索会有很多,以上内容是本人在实际工作中的总结,经过实践检验。
在实际的配置过程中,可能会存在其他的问题,一般都能很快解决,本次总结希望以后能够比较快速的处理类似的问题。
在此文的基础上加两点:
1.change master to的写法
->MASTER_HOST='master2.mycompany.com',
->MASTER_USER='replication',
->MASTER_PASSWORD='bigs3cret',
->MASTER_PORT=3306,
->MASTER_LOG_FILE='master2-bin.001',
->MASTER_LOG_POS=4,
->MASTER_CONNECT_RETRY=10;
2.双击热备配置后,mysql最好都重启下