本文主要讲述一下Mysql主从复制之一主一从的实现方法;
MySQL的复制是mysql数据库内建的功能,是构建基于mysql的大规模、高性能应有物基础,这类应用所谓的"水平扩展"的架构。可以通过为服务器配置为一个或多个备库的方式来进行数据同步。复制功能不仅有利于构建高性能的应用,同是也是高可用性、可扩展性、灾难恢复、备份以及数据仓库等工作的基础。复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。可以实现一台主服务器的数据可以同步到多台从服务器上,其实从服务器本身也是可以被配置成另外一台服务器的主服务器的。主和从之间可以有多种组合方式,应生产环境而定,可选择适合的组合方式;本文主要讲述一下Mysql主从复制之一主一从的实现方法;
主从复制的实现过程;
mysql复制默认为异步的工作模式;
主服务器binlog dump;将IO thread请求的事件发送给对方;具备读写
IO thread;向主服务器请求二进制日志中的事件; 只能读
主服务器(Master);172.16.38.10
从服务器(Slave);172.16.38.11
系统均为:CentOS6.5_64位
在配置主从之前,需要注意一点,就是从服务器数据库版本一定要高于或等于主服务器的版本;
1、Master的配置
打开mysql的主配置文件里添加如下:
vim /etc/my.cf/
2、创建存放二进制日志的目录;
mkdir -pv /mydata/binlogs
chown -R mysql:mysql /mydata/binlogs
3、连接数据库创建复制权限的用户帐号;
mysql -uroot -hlocalhost -predhat
创建一个具有复制权限的用户账号;
mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'user'@'172.16.%.%' IDENTIFIED BY 'redhat';
mysql> flush privileges;
1、Slave配置;
打开从服务器的主配置文件;vim /etc/my.cf,添加如下;
2、创建存放服务器的中继日志日录;
mkdir -pv /mydata/relaylogs
chown -R mysql:mysql /mydata/relaylogs
[root@mysql ~]# ls /mydata/relaylogs/
[root@mysql ~]# mysql 连接数据库
mysql> CHANGE MASTER TO MASTER_HOST='172.16.38.12',MASTER_USER='user',MASTER_PASSWORD='redhat'; 开始连接主服务器;
Query OK, 0 rows affected (0.07 sec)
4、连接上之后在主服务器上查看一下线程;
3、从服务器连接上查看连接状态信息;
show slave status\G
从服务器已经与主服务器连接上了;
现在在来看下在/mydata/relaylogs目录下有没有产生文件;
5、在主服务器上创建一个新的数据库,后在查看从服务器是否可以同步过去;
验证主服务器上创建的新库是否存在;
6、在主服务器上插入数据;
mysql> insert into nba values (Name),('bj'),('shanghai'),('xiangkong');
mysql> select * from nba;
+-----------+
| Name |
+-----------+
| NULL |
| bj |
| NULL |
| shangbai |
| NULL |
| xiangkong |
+-----------+
7、主服务器查看日志滚动编号;
从中间开始复制数据库
在主服务器生成数据文件,让从服务不从头开始复制,锁定位置在主服务器上做备份,让从服务器从中间开始复制
主服务器,如下图;
[root@mysql ~]# mysqldump --all-databases --flush-logs --master-data=2 --lock-all-tables > cba.sql
vim cba.sql
# scp cba.sql root@172.16.38.11:/root
从服务器;
mysql> CHANGE MASTER TO MASTER_HOST='172.16.38.12', MASTER_USER='user',MASTER_PASSWORD='redhat',MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=107;
[root@mysql ~]# mysql < cba.sql
mysql> start slave;
mysql> shwo slave status\G
再在在主服务器新建数据库;
查看主服务器上的库是否同步到从服务器;
转载于:https://blog.51cto.com/songoo/1403196