MySQL数据库双机热备------主-从备份配置mysql
实验环境:sql
主数据库 192.168.1.1 centos6.5 x86_64 +MySQL5.5.35数据库
从数据库 192.168.1.2 WindowsXP x64 +MySQL5.5.13windows
1、安装数据库centos
1.在centos6.5 x86_64 上面安装MySQL5.5.35数据库,下载rpm包的形式安装,在MySQL的官网上面下载。服务器
MySQL-client-5.5.35-1.el6.x86_64.rpmide
MySQL-server-5.5.35-1.el6.x86_64.rpm测试
2.WindowsXP x64 上面安装MySQL5.5.13,软件在网上获取。spa
2、两个数据库都修改root密码,而且开启远程访问权限。线程
1.# mysqladmin -u root -ppassword newpassword
Windows上面的是在dos下面进入到C:\Program Files\MySQL\MySQL Server 5.5\bin目录而后执行上面的命令。
2.mysql> grant all privileges on *.* to root@'% 'identified by 'newpassword';
mysql>flush privileges;
修改好以后,相互远程测试一下看是否可以相互远程。
3、主数据库配置
登录mysql操做界面,在主服务器上为从服务器创建一个用来同步的链接账户,该账户必须授予REPLICATION SLAVE权限。由于从mysql版本3.2之后就能够经过REPLICATION对其进行双机热备的功能操做。
操做指令以下:
mysql> grant replication slave on*.* to bak@'192.168.1.2' identified by 'bak';
mysql> flush privileges;
建立好同步链接账户后,咱们能够经过在从服务器(Slave)上用bak账户对主服务器(Master)数据库进行访问,看下是否能链接成功。在从服务器(Slave)上输入以下指令:
# mysql –h192.168.1.1 –u bak –p回车以后要求输入密码,密码为bak,若是登录成功,则能够继续进行双击热备,不然请找到问题并解决。
修改配置文件 /etc/my.cnf打开在[mysqld]下修改便可:
[mysqld]
server-id= 1
log-bin=mysql-bin #启用日志文件
binlog-do-db= test#须要同步的数据库
binlog-ignore-db= mysql #不须要同步的数据库
修改完配置文件后,保存后,重启一下mysql服务,若是成功则没问题
#servicemysql restart
登录mysql 输入命令:
mysql>flush tables whit read lock;锁表以便在同步以前写数据进去。
mysql>show master status\G
**************************1.row*************************
File: mysql-bin.000003
Position: 1337
Binlog_Do_DB: test
Binlog_Ignore_DB: mysql
1 row in set(0.00 sec)
注意看里面的参数,特别前面两个File和Position,在从服务(Slave)配置主从关系会有用到的。
注:这里使用了锁表,目的是为了产生环境中不让进新的数据,好让从服务器定位同步位置,初次同步完成后,记得解锁。
mysql>unlock tables;
QueryOK, 0 rows affected (0.00 sec)
4、从数据库配置
修改配置文件 C:\Program Files\MySQL\MySQL Server 5.5 中的my.ini
由于这里面是以主-从方式实现mysql双机热备的,因此在从服务器就不用在创建同步账户了,直接打开配置文件my.cnf进行修改便可,道理仍是同修改主服务器上的同样,只不过须要修改的参数不同而已。以下:
[mysqld]
server-id = 2
log-bin=mysql-bin
replicate-do-db = test
replicate-ignore-db =mysql,information_schema,performance_schema
修改完以后,重启windows上的mysql的服务。
Netmysql restart也能够手工去服务里面找到mysql重启。
5、利用change master 语句指定同步位置
在从服务器上面操做,这步是最关键的一步了,在进入mysql操做界面后,输入以下指令:
mysql>stopslave; //先停步slave服务线程,这个是很重要的,若是不这样作会形成如下操做不成功。
mysql>change master to
>master_host='192.168.1.1',master_user='bak',master_password='bak',
> master_log_file=' ysql-bin.000003',master_log_pos=1337;
注:master_log_file,master_log_pos由主服务器(Master)查出的状态值中肯定。也就是刚刚叫注意的。master_log_file对应File, master_log_pos对应Position。Mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。
若是遇到问题不成功,则须要从新设置slave命令以下:
mysql>stop slave;
mysql>reset slave;
以后中止slave线程从新设置。成功后,则能够开启slave线程了。
mysql>start slave;
6、测试
在从服务器上查看从服务器的状态,用以下指令进行查看
mysql> show slave status\G 若是出现如下信息
查看下面两项值均为Yes,即表示设置从服务器成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
在主数据库的test库中建表写数据,查看从数据库中是否在同步。
7、结论
主从数据库的热备操做比较复杂,遵循的原则是每一步必须都调试成功,不然下面就没法进行了。Mysql 5.x以上版本已经不支持在配置文件中指定主服务器相关选项。因此要使用changemaster语句,这一点很重要。