MySQL数据库主从配置详解
现有两台机器 A、B 需要实施 MySQL 的主从热备份,A 作为主服务器,B 作为副服务器
A、B 的操作系统一样,mysql 版本均为 5.0
A服务器ip:192.168.10.110
B服务器ip:192.168.10.2
详细操作步骤如下:
1、主服务器授权
授权副服务器可以连接主服务器并进行更新。也就是在A服务器上添加一个mysql 账号让B服务器可以通过这个账号连接A服务器的mysql 并进行相关更新操作。
例如:grant replication slave on *.* to 'aaa@'124.70.218.105' identified by '123456';
2、数据复制
建立好访问许可之后,接下来是主服务器向副服务器复制数据。在A服务器上有个bacdbk数据库,我们现在假设以这个数据库来作同步,将A的backdb数据库复制到B服务器上,可以使用 mysqldump工具,操作完成之后如下两图所示:
A 服务器:(主服务器)
B 服务器:(副服务器)
现在 A、B 服务器都有 backdb 数据库了,复制完成
3、配置主服务器(A服务器)
修改mysql 的配置文件 my.cnf(/etc/my.cnf),Windows 下是 my.ini
找到 server-id,给主服务器的 server-id 指定一个值(注意:主服务器和副服务器的server-id
的值不能相同)。另外还要在主服务器启动二进制日志,即在选项配置文件中添加 log-bin 启动选项。配置示例如下:
# 唯一值,并不能与服务器的值相同
Server-id=1
#日志文件以 mysql-bin 为前缀
log-bin = mysql-bin
#日志文件跳过的数据库(可选属性)
binlog-ignore-db=mysql
#日志文件操作的数据库(可选属性)
binlog-do-db=backdb
小结:
Server-id=1
log-bin = mysql-bin
binlog-ignore-db=mysql
binlog-do-db=backdb
配置好之后重启 mysql 服务器,在重启之前清空二进制日志(reset master 命令)
mysql>reset master;
Query OK, 0 rows affected (0.00 sec)
4、配置副服务器(B 服务器)
修改副服务器的mysql 配置文件(注意:副服务器的mysql 版本不能低于主服务器的mysql版本)my.cnf 文件。
[mysqld]
#唯一,并与主服务器上的 server-id 不同。
server-id=2
#主服务器的主机名或者 ip 地址
master-host=192.168.10.110
#如果主服务器没有在默认的端口上监听,则需确定 master-port 选项
master-port=3306
#主服务器中创建的用户名和密码
master-user=aaa
master-password=123456
#复制操作要针对的数据库(可选,默认为全部)
replicate-do-db=backdb
#如果主副服务器间连接经常失败,需增加 master-retry-count 和 master-connect-retry
#master-retry-count 连接重试的次数
#master-connect-retry 连接失败后等待的秒数
master-retry-count = 999
master-connect-retry = 60
小结:
server-id=2
master-host=192.168.10.110
master-port=3306
master-user=aaa
master-password=123456
replicate-do-db=backdb
master-retry-count = 999
master-connect-retry = 60
Master.info 文件
在日志目录下有个 master.info 文件,其中包含所有有关复制过程的信息(连接主服务器的相关信息及与主服务器交换数据的相关信息)。在初次启动以后,副服务器将检查这个master.info 文件,以得到相关信息。如果想修改复制选项,删除 master.info 并重启 MySQL 服务,在启动过程中使用选项配置文件中的新选项进行重新创建了 master.info 文件。
5、管理服务器过程
5.1、管理主服务器
显示数据库服务器上有关线程的信息
显示二进制日志信息
显示主服务器二进制其他信息
5.2、管理副服务器:在上面步骤4中配置好副服务器后需要重启 mysql 服务,进入mysql 命令行用于开始复制
mysql>start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
查看服务器的状态信息,其中 Slave_IO_Running 对应的值为 YES, Slave_SQL_Running 对应的值为 YES
6、查看数据同步情况
现在主、副服务器数据库起点一样,backdb数据库下都有一张空表 t_user
主服务器(A服务器)
mysql> use backdb;
Database changed
mysql> select * from t_user;
Empty set (0.00 sec)
副服务器(B服务器)
mysql> use backdb;
Database changed
mysql> select * from t_user;
Empty set (0.02 sec)
根据上面的显示,两个库都是空表,现在我们在主服务器(A服务器)的表中添加数据,看看副服务器(B服务器)有没有同步数据
主服务器(A服务器)
mysql> insert into t_user values('10000','suxh');
Query OK,1 row affected (0.00 sec)
mysql> select * from t_user;
副服务器(B服务器)
这时看到B服务器也有数据了,那么说明我们的整个操作是没有问题的,即实现了mysql的主从配置。
每天都为您呈现经过小编精心整理与筛选的相关技术文档与资料,为的就是能够和业内的朋友和广大爱好者一起学习,一起讨论、一起进步,欢迎您随时留言和大家一起探讨,与君共勉!