FreeBSD下配置Mysql主从复制(环境:FreeBSD 7.4 mysql 5.1.57)
MySQL数据库支持数据库的主从复制功能,使用主数据库进行数据的插入、删除与更新操作,而从数据库则专门用来进行数据库查询,从数据库还可以建立多台,通过负载均衡来实现查询,这样就可以将更新操作与查询操作分离到不同的数据库上,从而提高查询的效率,降低系统的负载。
一、主数据库配置
修改mysql的配置文件my.cnf如下:
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = ceshi --要同步的数据库名称
binlog-ignore-db = mysql --不要同步的数据库名称
注:MySQL进行主从复制是通过二进制的日志文件来进行,所以我们必须开启MySQL的日志功能,即我们上面的log-bin,同时每一台数据库服务器都需要指定一个唯一的
server-id,通常主数据库服务器我们指定为1。
给主数据库授予一个可以进行复制的用户,如下:
- grant replication slave on *.* to repuser@’192.168.8.34′ identified by ’123456′;
replication slave——MySQL数据库中表示复制的权限名称
repuser——从数据库服务器登陆到主数据库服务器时用到的用户名称
host——从数据库IP地址
123456——登陆密码
如果上述权限设置后,无法同步,可将其改为
- grantselect,insert,update,delete,replication slave on *.* to repuser@'192.168.8.34' identified by '123456';
配置完上述步骤后,就可以启动主数据库了。
二、从数据库配置
修改配置文件
[mysqld]
server-id=2
log-bin=mysql-bin --在从服务器上启动日志记录,不是必须,但是官方建议
master-host = 192.168.8.33 --主数据库服务器的IP地址
master-user = repuser --执行复制的用户名称,就是grant的用户,即repuser
master-password = 123456 --复制用户的密码,就是grant的用户密码,即123456
master-port = 3306 --主数据库服务器的端口,默认是3306
replicate-do-db=dbname --需要同步的数据库
#replicate-ignore-db=dbname --不需要同步的数据库
现在可以重启从数据库,启动后,还需要启动复制线程
slave start
查看复制线程的状态
show slave status;
我们还可以在从数据库服务器上动态的改变对主数据库的配置信息,通过如下命令来进行:
CHANGE MASTER TO MASTER_HOST='主数据库服务器的IP地址',MASTER_PORT=3306,MASTER_USER='主数据库上的复制帐号',MASTER_PASSWORD='密码';
三、启动与监控
1、监控主数据库服务器
show master status; --运行于主数据库
+------------------------+-----------+------------------+-------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------------+-----------+------------------+-------------------------+
| mysql-bin.000011 | 189 | ceshi | mysql |
+------------------------+-----------+------------------+-------------------------+
1 row in set (0.00 sec)
其中File是表示日志记录的文件,而Position则是表示当前日志在文件中的位置,这个也是从数据库服务器上执行复制操作必须的标识,后面的两个字段分别表示要记录的数据库名称和不需要记录的数据库名称,我们也可以在配置文件中进行配置。
2、监控从数据库服务器
show slave status; --运行于从数据库
注:如果从数据库服务器在同步的过程中出现了问题,那么我们可以通过reset slave来重置从数据库服务器的复制线程。
从数据库常用命令:
Slave start; --启动复制线程
Slave stop; --停止复制线程
Reset slave; --重置复制线程
Show slave status; --显示复制线程的状态
Show slave status\G; --显示复制线程的状态(分行显示)
Show master status\G; --显示主数据库的状态(分行显示)
Show master logs --显示主数据库日志,需在主数据库上运行
Change master to; --动态改变到主数据库的配置
Show processlist --显示有哪些线程在运行
如非注明则为本站原创文章,欢迎转载。转载请注明转载自:moon's blog