MySQL的主从复制配置
来源:互联网 发布:知乎 usb光驱 编辑:程序博客网 时间:2024/06/05 21:14
一 Mysql主从复制简介
1.基本原理
Mysql服务器之间的复制是基于二进制日志机制的。在主服务器上,Mysql在执行命令的同时会生成一个操作事件日志写入二进制文件(主服务器要开启二进制日志功能),而从服务器则负责读取主服务器的二进制日志,并在从服务器上重新执行该事件,从而是数据复制到本机。
实现复制过程需三个线程完成:Master的IO线程,Slave的IO和SQL线程。
1.Slave的IO线程连接Master,请求从指定文件指定位置或最开始位置之后的日志内容。
2.Matser在接收到Slave的IO线程后,通过自身的IO线程读取对应日志信息,并返回给Slave的IO线程。(返回信息还包括Binary Log名称及位置)
3.Slave的IO线程获取信息后,依次写入Slave端的Relay Log文件的最后,并将读取的Master的Binary Log的文件名和位置传入master-info文件,以便下次快速读取。
4.Slave的SQL线程检测出Relay Log文件新增加的内容后,会解析成对应SQL语句进行执行。
2.Mysql复制类型
1.基于SQL语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时,会自动选着基于行的复制。
2.基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍。
3.混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
2.基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍。
3.混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。
3.Mysql复制优势
1.高性能:读写分离,提高操作性能和效率。
2.数据安全:随时暂停从服务器复制,实现数据备份和还原。
3.远程数据分享.
4.Mysql复制3个步骤:
1.master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
2.slave将master的binary log events拷贝到它的中继日志(relay log);
3.slave重做中继日志中的事件,将改变反映它自己的数据。
(注意:Mysql主从服务器的ID编号必须是不同的)
二 Mysql主从复制配置(测试mysql安装:yum install mariadb mariadb-server -y)
配置前进行校时操作
#安装ntpdate工具
yum install ntpdate-y
#使用ntpdate校时(后面的是ntp服务器)
ntpdate pool.ntp.org
1.主服务器配置(192.168.1.166)
1.主服务开启二进制日志并设置服务器编号(需重启)
vim /etc/my.cnf
#在[mysqld]追加
log-bin=Jacob-bin
server-id=166
2.创建复制帐号
mysql -u root -p
#创建用户slave_up允许从192.168.1网段登录
CREATE USER 'slave_cp'@'192.168.1.%' IDENTIFIED BY 'pass';
- grant replication slave on *.* to 'slave_cp'@'192.168.1.%';
- exit
3.获取主服务器二进制日志信息
mysql -u root -p
#对数据库进行只读锁定(防止查看二进制日志同时有人对数据库修改操作)
flush tables with read lock;
- #查询主机二进制文件信息
show master status;
+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| Jacob-bin.000003 | 2933 | | |+------------------+----------+--------------+------------------
#解除只读锁定
unlock tables;
exit
4.对现有数据库进行备份。(生产服务器可能本身已存在大量数据)
#备份主数据库,并上传给从数据库
mysqldump -uroot -p123456 --all-databases --lock-all-tables >/tmp/dbdump.sql
scp /tmp/dbdump.sql 192.168.1.168:/tmp/
5.防火墙策略允许
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
2.从数据库配置(192.168.1.168)
1.从服务进行编号(需重启) 2.从服务器导入主服务器数据库
vim /etc/my.cnf
#在[mysqld]追加
server-id=168
mysql -uroot -p </tmp/dbdump.sql
3.配置从服务器连接主服务器进行数据复制
mysql -uroot -p
#告知从服务器建立网络连接的必要信息
change master to
master_host='192.168.1.166' ,
master_user='slave_cp',
master_password='pass',
master_log_file='Jacob-bin.000003',
master_log_pos=2933;
#启动slave
start slave;
#查看是否正常工作
show slave status\G
exit
4.防火墙策略允许
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
3.数据同步验证
1.主服务操作
mysql -uroot -p
#建立测试数据库及添加一些信息
create database test1;
use test1;
create table t_table(
name char(20),
age int,
note varchar(50));
insert into t_table values
('zhangsan',20,'Beijing'),
('lisi',20,'Xian');
exit
2.从服务器验证
mysql -uroot -p
select * from test1.t_table;
+----------+------+---------+| name | age | note |+----------+------+---------+| zhangsan | 20 | Beijing || lisi | 20 | Xian |+----------+------+---------+
exit
0 0
- mysql的主从复制配置
- MySQL的主从复制配置
- 配置mysql的主从复制
- mysql 主从复制 主从配置
- MySQL主从复制配置
- MySQL主从复制配置
- 配置MySQL主从复制
- MySQL主从复制配置
- mysql 主从复制配置
- MySQL主从复制配置
- mysql 主从复制配置
- MySQL主从复制配置
- MySQL主从复制配置
- MySQL主从复制配置
- MySQL主从复制配置
- MySql 主从复制配置
- 配置MySQL主从复制
- MySQL主从复制配置
- [干货]2017已来,最全面试总结——这些Android面试题你一定需要
- 日期格式转换方法(注册生日)
- Python数据挖掘课程 二.Kmeans聚类数据分析及Anaconda介绍
- 栈的实现
- c代码:猜数字游戏
- MySQL的主从复制配置
- 测试标题
- 第100002(十万零二)个素数
- ES6---数组array新增方法
- LeetCode 543. Diameter of Binary Tree 解题笔记
- Unity优化--Texture
- CentOS7安装Hadoop,比较有效的方式,虽然也除了点小问题,但如果仔细按教程走.应该一次通过的
- 分数四则运算(Java)acm.sdut
- 111:H-Index