Ubuntu 14.04下 MySQL实现单机主从复制
2017-04-06 16:15
260 查看
Ubuntu 14.04下 MySQL 5.7.17实现单机主从复制
一、系统环境
Ubuntu 14.04 64位MySQL 5.7.17 64位 源码编译安装
已实现mysqld_multi设定好的三个mysql服务,见教程http://blog.csdn.net/uphailin/article/details/69389207
在Ubuntu系统中使用mysqld_multi单机实现主从复制的配置如下表:
角色 | IP | 操作系统 | MySQL版本 | 端口 |
---|---|---|---|---|
master | 127.0.0.1 | Ubuntu 14.04 | 5.7.17 | 3306 |
slave | 127.0.0.1 | Ubuntu 14.04 | 5.7.17 | 3307 |
slave | 127.0.0.1 | Ubuntu 14.04 | 5.7.17 | 3308 |
二、登陆master服务器,设置复制的账户,并授予REPLICATION SLAVE权限
mysqld_multi --defaults-extra-file=/etc/my.cnf start 1-3 mysql -uroot -P 3306 -h 127.0.0.1 mysql> grant replication slave on *.* to 'hailin'@'*' identified by '123456';
三、拷贝数据
(假如是你完全新安装mysql主从服务器,这个一步就不需要。因为新安装的master和slave有相同的数据。当前实验为完全新安装。)关停Master服务器,将Master中的数据拷贝到从服务器中,使得Master和slave中的数据同步,并且确保在全部设置操作结束前,禁止在Master和slave服务器中进行写操作,使得两数据库中的数据一定要相同!
四、配置master
接下来对master进行配置,编辑/etc/my.cnf。包括打开二进制日志,指定唯一的servr ID。[mysqld1] port=3306 basedir=/usr/local/mysql datadir=/home/MysqlData1 socket=/home/MysqlData1/mysql1.sock user=mysql log-bin = /home/MysqlData1/log-bin max_binlog_size=500M server-id = 1 #skip-grant-tables
重启master并登录,运行SHOW MASTER STATUS,输出如下:
四、配置slave
slave的配置与master类似,你同样需要关闭slave的MySQL。并编辑/etc/my.cnf。[mysqld2] port=3307 basedir=/usr/local/mysql datadir=/home/MysqlData2 socket=/home/MysqlData2/mysql2.sock user=mysql server-id = 2 relay-log=/home/MysqlData2/relay-log #skip-grant-tables
server_id是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置bin_log。在这里,我们没有开启二进制日志。relay_log配置中继日志。
接下来就是让slave连接master,并开始重做master二进制日志中的事件。你不应该用配置文件进行该操作,而应该使用CHANGE MASTER TO语句,该语句可以完全取代对配置文件的修改,而且它可以为slave指定不同的master,而不需要停止服务器。启动slave:
mysqld_multi --defaults-extra-file=/etc/my.cnf start 2
登陆slave后执行:
mysql> stop slave; mysql> CHANGE MASTER TO -> MASTER_HOST='127.0.0.1', -> MASTER_USER='hailin', -> MASTER_PASSWORD='123456', -> MASTER_LOG_FILE='bin-log.000002', -> MASTER_LOG_POS=463; mysql> start slave;
运行SHOW SLAVE STATUS查看输出结果:
在这里主要是看:
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
slave的I/O和SQL线程都已经开始运行,而且Seconds_Behind_Master不再是NULL。
你可查看master和slave上线程的状态。在master上,你可以看到slave的I/O线程创建的连接:
在master上输入show processlist\G;
相关文章推荐
- MySQL实现单机多实例安装并配置主从复制
- ubuntu16.04 实现mysql 主从复制读写分离
- MYSQL 主从复制读写分离实现
- mysql 主从复制读写分离实现
- 在Linux环境下单机上实现MySQL5主从数据库同步复制
- Mysql主从复制,读写分离之Mysql-proxy实现
- 基于semisync实现MySQL的主从半同步复制
- mysql 主从复制读写分离实现
- 如何实现mysql主从服务器的半同步复制
- Mysql的主从复制的读写分离之Amoeba实现 推荐
- mysql主从复制的原理及配置实现
- Mysql实现主从复制
- Ubuntu下编译安装Mysql双实例并配置主从复制
- 用xtrabackup实现mysql的主从复制快速部署【主不锁表】 推荐
- MySQL 备份和恢复策略四:使用主从复制机制(replication)实现数据库实时备份
- mysql-mmm------实现mysql互为主从复制HA功能
- MySQL的复制(主主及主从架构的实现)
- mysql服务器复制的主从架构半同步的实现
- MySQL主从复制、半同步和主主复制的实现
- Mysql的AB复制(主从复制)原理及实现