mysql主从复制原理及配置步骤
2016-04-22 11:40
916 查看
看过一本书,总要留下点痕迹
搭建复制的环境,需要一台主服务器master,和一台从服务器slave,把主服务器上的数据备份到从服务器上,过程如下:
1 配置一个服务器作为master
1.1
配置二进制日志 : 这个日志记录了数据的变化,通过这个日志,把主服务器的变化发给从服务器
配置服务器ID:唯一标识
修改my.conf:
1.1.1 log-bin = master-bin (指定二进制日志产生的所有文件的基本名)
1.1.2 log-bin-index = master-bin.index(索引文件,保存所有二进制文件的列表)
1.1.3 server-id = 1
1.2
master上创建复制用户,用于把master上的数据复制到slave
1.2.1 CREATE USER repl_user 创建用户repl_user
1.2.2 GRANT REPLICATION SLAVE ON *.* TO repl_user IDENTIFIED BY 'xyzzy' 给该用户赋予复制的权限,密码为xyzzy
2 配置一个服务器为slave
配置my.conf文件
2.1 server-id : 2
2.2 relay-log-index : slave-relay-bin.index
2.3 relay-log = slave-relay-bin
3 将slave链接到master
使用CHANGE MASTER TO命令使slave指向Master,然后使用 START SLAVE命令启动复制
3.1 CHANGE MASTER TO
MASTER_HOST = "masteri-1"(主机名或ip地址)
MASTER_PORT = 3306
MASTER_USER = 'repl_user'
MASTER_PASSWORD = 'xyxxz'
3.2 START SLAVE
上述是配置过程,配置好了,就可以实现主从复制,下面介绍下原理性的内容
介绍个重要的概念:二进制日志 binary-log
它记录了数据库上的所有改变。执行完毕的数据库语句,会写入二进制日志。
create table test(tmp varchar(100))
insert into test values("1111111111")
select * from test
flush logs(强制轮换二进制日志)
查看二进制文件的内容
show binlog events\G
log-name: master-bin.000001
pos:4
server-id:1
end_log_pos:106
info:server ver:5.1.33
log-name: master-bin.000001
pos:106
server-id:1
end_log_pos:197
info:create table tbl
....省略了后面两个事件,一个是insert,还有一个是flush,pos,end_pos指的是文件的起止位置。
二进制记录了数据库的变化,但是如果master运行了好久,slave从头开始读master的二进制日志,效率太低。
所以可以通过先copy master的数据,在搭建主从复制的环境,实现主从复制,这是效率较高的方式。
1 show master status,显示二进制的当前pos位置,作为复制的起点,从起点往前的所有数据进行备份。
2 锁住master的表,主要锁写
3 mysqldump host=master.1 > backup.sql(生成备份文件,master副本)
4 解锁
5 slave机器上使用备份进行恢复
这样就会完成master的克隆,然后按照复制的步骤搭建主从复制的环境,就可以完成配置。
搭建复制的环境,需要一台主服务器master,和一台从服务器slave,把主服务器上的数据备份到从服务器上,过程如下:
1 配置一个服务器作为master
1.1
配置二进制日志 : 这个日志记录了数据的变化,通过这个日志,把主服务器的变化发给从服务器
配置服务器ID:唯一标识
修改my.conf:
1.1.1 log-bin = master-bin (指定二进制日志产生的所有文件的基本名)
1.1.2 log-bin-index = master-bin.index(索引文件,保存所有二进制文件的列表)
1.1.3 server-id = 1
1.2
master上创建复制用户,用于把master上的数据复制到slave
1.2.1 CREATE USER repl_user 创建用户repl_user
1.2.2 GRANT REPLICATION SLAVE ON *.* TO repl_user IDENTIFIED BY 'xyzzy' 给该用户赋予复制的权限,密码为xyzzy
2 配置一个服务器为slave
配置my.conf文件
2.1 server-id : 2
2.2 relay-log-index : slave-relay-bin.index
2.3 relay-log = slave-relay-bin
3 将slave链接到master
使用CHANGE MASTER TO命令使slave指向Master,然后使用 START SLAVE命令启动复制
3.1 CHANGE MASTER TO
MASTER_HOST = "masteri-1"(主机名或ip地址)
MASTER_PORT = 3306
MASTER_USER = 'repl_user'
MASTER_PASSWORD = 'xyxxz'
3.2 START SLAVE
上述是配置过程,配置好了,就可以实现主从复制,下面介绍下原理性的内容
介绍个重要的概念:二进制日志 binary-log
它记录了数据库上的所有改变。执行完毕的数据库语句,会写入二进制日志。
create table test(tmp varchar(100))
insert into test values("1111111111")
select * from test
flush logs(强制轮换二进制日志)
查看二进制文件的内容
show binlog events\G
log-name: master-bin.000001
pos:4
server-id:1
end_log_pos:106
info:server ver:5.1.33
log-name: master-bin.000001
pos:106
server-id:1
end_log_pos:197
info:create table tbl
....省略了后面两个事件,一个是insert,还有一个是flush,pos,end_pos指的是文件的起止位置。
二进制记录了数据库的变化,但是如果master运行了好久,slave从头开始读master的二进制日志,效率太低。
所以可以通过先copy master的数据,在搭建主从复制的环境,实现主从复制,这是效率较高的方式。
1 show master status,显示二进制的当前pos位置,作为复制的起点,从起点往前的所有数据进行备份。
2 锁住master的表,主要锁写
3 mysqldump host=master.1 > backup.sql(生成备份文件,master副本)
4 解锁
5 slave机器上使用备份进行恢复
这样就会完成master的克隆,然后按照复制的步骤搭建主从复制的环境,就可以完成配置。
相关文章推荐
- MySql数据库之alter表的SQL语句集合
- mysql存储过程详解
- mysql存储过程详解
- MySQL中删除重复数据只保留一条
- MySQL中的变量定义
- 不同库 不同表 不同字段 数据同步 触发器
- mysql学习笔记(三)
- mysql建表---级联删除
- MySQL ibdata1文件太大的解决办法
- Install MySQL 5.7 Enterprise Server in 10 minutes
- ERROR 1130: Host '' is not allowed to connect to this MySQL server
- 4000 MySQL5.7多源复制(Multi-Source Replication)
- Windows 下连接mysql工具NavicatForMysql
- cnetos7安装mysqlsla
- Mysql函数汇总
- Emoji表情符号录入MySQL数据库报错的解决方案
- MySQL编译安装
- MySQL集群搭建
- 四种mysql存储引擎
- mysql存储过程加事务