1.MySQL主从复制介绍
主从复制实现的原理:(同步二进制日志文件)
主服务器开启二进制日志功能,当mysql进行操作同时生成一条操作事件日志,
并写入二进制日志文件中,从服务器通过同步二进制日志文件,并在从服务器
重新执行该事件,从而实现主从复制。
2.主从服务器配置
架构:
前端服务:负载均衡
后端数据库:主从复制+读写分离
主从服务器配置:
(准备)
master:192.168.17.129
slave: 192.168.17.128
slave: 192.168.17.130(1)主服务器配置(master配置):
vi /etc/my.cnf
① 在[mysqld]下添加如下字段:
server-id=1 //数据库ID号,为1时表示为Master,其中master_id必须为1到232间正整数
log-bin=mysql-bin //启用二进制日志
binlog-do-db=wordpress //需要同步的二进制数据库名
binlog-ignore-db=mysql //不同步的二进制数据库名,如果不设置可以将其注释掉
log-bin=/var/log/mysqlbin/bin_log //设定生成的 log 文件名
log-slave-updates //把更新的记录写到二进制文件中
expire_logs_days = 8 //日志文件过期天数,系统默认是0,表示不过期,这里设置8天前的binlog会被删除,但如果以后需要恢复,请记得备份,或者改大
② 创建一个目录用来保存 binlog 日志
mkdir /var/log/mysqlbin/
chown -R mysql:mysql /var/log/mysqlbin/
③ 授权用户可以通过从库来复制
mysql> grant replication slave on *.* to [email protected] identified by 'changeme'
④ 重启 mysql 服务
service mysqld restart
注意:在配置文件中不要使用 skip-networking 参数,否则从服务器无法与主服务器进行连
接并复制数据。
(2)从服务器配置(slave配置,两台一样配置)
vi /etc/my.cnf
① 在[mysqld]下添加如下字段:
server-id=2 // 如果需要增加 Slave 库则此 id 往后顺延
master-host=192.168.17.129 //主库 host
master-user=ubinlog //在主数据库服务器中建立的用于该从服务器备份使用的用户
master-password=changeme
master-port=3306
master-connect-retry=60 //如果发现主服务器断线,重新连接的时间差
replicate-ignore-db=mysql //不需要备份的数据库
replicate-do-db=wordpress //需要备份的数据库
② 重启 Mysql 服务
service mysqld restart
③ 在从服务器上查看状态
mysql>slave start;
mysql>show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_IO_Running:连接到主库,并读取主库的日志到本地,生成本地日志文件
Slave_SQL_Running:读取本地日志文件,并执行日志里的 SQL 命令
3.主从配置后测试是否生效
最后主库上面新建数据库测试,注意:最好先在配置文件里面添加要同步的数据库名称,然后在去建立数据库.
如果主服务器已经存在应用数据,则在进行主从复制时,需要做以下处理:
(1)主数据库进行锁表操作,不让数据再进行写入动作
mysql> FLUSH TABLES WITH READ LOCK;
(2)查看主数据库状态
mysql> show master status;
(3)记录下 FILE 及 Position 的值。
将主服务器的数据文件(/var/lib/mysql/目录除了 mysql 等默认目录)复制到从服务器,
建议通过 tar 归档压缩后再传到从服务器解压。
(4)取消主数据库锁定
mysql> UNLOCK TABLES;
mysql> grant replication slave on *.* to [email protected] identified by 'changeme';
标签:主从复制,slave,log,数据库,mysql,服务器,日志 From: https://www.cnblogs.com/huchao12/p/17557813.html