最近在玩mysql主从配置,在此记录一下
一、前言
1、安装两个虚拟机(CentOS 7)。iP分别是192.168.47.131 和192.168.47.133.其中192.168.47.133作为主数据库,192.168.47.131作为从数据库
2、在线安装Mysql数据库。具体安装方法请参考:http://www.cnblogs.com/jerrylz/p/5645224.html
3、在主从数据库中创建 testdb 数据库。(作为同步的数据库)
二、具体步骤
1、主数据库(master)配置
(1)在Master MySQL上创建一个用户‘test’,并允许其他Slave服务器可以通过远程访问Master,通过该用户读取二进制日志,实现数据同步。
mysql>create user test; //创建新用户
//test用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.47.%,这个配置是指明test用户所在服务器,这里%是通配符,表示192.168.47.0-192.168.47.255的Server都可以以test用户登陆主服务器。当然你也可以指定固定Ip。
mysql> GRANT REPLICATION SLAVE ON *.* TO 'test'@'192.168.47.%' IDENTIFIED BY 'mysql';
(2)修改Master MySQL的配置文件 my.cnf
[root@bogon local]# vim /etc/my.cnf
//在my.cnf 的 [mysqld]添加以下内容
server_id =1
log-bin=mysql-bin
binlog-do-db=testdb #允许复制的数据库名称,一行代表一个数据库
binlog-ignore-db=mysql #不复制的数据库
(3)重启数据库,查看。
[root@bogon local]# service mysqld restart //进入数据库
show master status;
结果如下:
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 699 | testdb | mysql | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
看到file和position,记录下来,后面需要用到。分别是 mysql-bin.000001和
2、从数据库(slave)配置
(1)修改MySQL的配置文件 my.cnf
[root@bogon local]# vim /etc/my.cnf
//在my.cnf 的 [mysqld]添加以下内容
server_id=2
log-bin=mysql-bin
replicate-do-db=testdb
replicate-ignore-db=mysql
(2)重启数据库 命令:service mysqld restart。登录数据库。
mysql> stop slave; #关闭slave同步进程
mysql> change master to master_host='192.168.47.133',master_user='test',master_password='mysql',master_log_file='mysql-bin.000001',master_log_pos=699;
mysql> start slave; #启动slave同步
mysql> show slave status; #查看状态
注意:slave_io_running:yes 和slave_sql_running:yes 说明能正常同步了。
3、测试。
(1)在主服务器中 testdb 创建 t_user 表,并插入一条数据。
CREATE TABLE t_user(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(50),
age INT
) INSERT INTO t_user (NAME,age) VALUES ('test',21);
(2)在从服务器中的 testdb 查看是否存在 t_user 表,并且是否有相应的数据。
SELECT * FROM t_user;
从数据库中存在 t_user 表 ,并且有相应的数据。说明mysql主从配置已经成功了。