mysql 主从复制原理html
Mysql 的 binlog 日志重现的原理。binlog 会记录下全部修改了数据库的SQL 语句insert,update,delete,create,alter,drop table, grant 等等。mysql
主从复制的原理其实就是把主服务器上的 bin 日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。sql
复制流程图:数据库
主从复制配置过程:服务器
主节点:ide
1. 启用二进制日志。测试
2. 为当前节点设置一个全局惟一的server_id。ui
3. 建立有复制权限的用户帐号 REPLIACTION SLAVE ,REPLIATION,CLIENT。编码
从节点:spa
1. 启动中继日志。
2. 为当前节点设置一个全局惟一的server_id。
3. 使用有复制权限的用户帐号链接至主节点,并启动复制线程。
Mysql多实例搭建(Windows环境)
复制安装成功的mysql实例
修改my.ini文件
[client]# 端口号port=3307[mysql]# 编码格式default-character-set=gbk[mysqld]# 端口号port=3307# 配置根目录basedir="D:/ProgrammingTool/DataManagementTool/mysql-5.6.42-winx64 - 2/"# 配置数据存储根目录datadir="D:/ProgrammingTool/DataManagementTool/mysql-5.6.42-winx64 - 2/data/"character-set-server=gbkdefault-storage-engine=MyISAMsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES# 配置最大链接数max_connections=512
依此类推配置第二个实例,第三个实例。
2. 安装mysql服务
以管理员身份运行cmd窗口,在mysql根目录bin文件下执行安装服务
mysqld install {服务名称} --defaults-file="{根目录下ini文件}"eg: mysqld install MYSQL2 --defaults-file="D:/ProgrammingTool/DataManagementTool/mysql-5.6.42-winx64 -2/my.default.ini"
3. 启动mysql服务
4. 测试链接
主从复制参数配置流程
1. 在主服务器上,必须开启二进制日志机制和配置一个独立的ID
2. 在每个从服务器上,配置一个惟一的ID,建立一个用来专门复制主服务器数据的帐号
3. 在开始复制进程前,在主服务器上记录二进制文件的位置信息
4. 若是在开始复制以前,数据库中已经有数据,就必须先建立一个数据快照(能够使用mysqldump导出数据库,或者直接复制数据文件)
5. 配置从服务器要链接的主服务器的IP地址和登录受权,二进制日志文件名和位置
配置主库ini参数
# For advice on how to change settings please see# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the# *** default location during install, and will be replaced if you# *** upgrade to a newer version of MySQL.[mysqld]# Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.# innodb_buffer_pool_size = 128M# Remove leading # to turn on a very important data integrity option: logging# changes to the binary log between backups.# log_bin# These are commonly set, remove the # and set as required.# basedir = .....# datadir = .....# port = .....# server_id = .....#=========主从复制关键配置===================== #主库和从库须要不一致,配一个惟一的ID编号,1至32。手动设定server_id=1log_slave_updates=1#二进制文件存放路径,存放在根目录datalog_bin=master-bin# 设置同步数据库binlog-do-db=office_dev# 设置忽略数据库binlog-ignore-db=boos# Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2Msql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
配置从库ini参数
[client]# 端口号port=3307[mysql]# 编码格式default-character-set=gbk[mysqld]# 端口号port=3307# 配置根目录basedir="D:/ProgrammingTool/DataManagementTool/mysql-5.6.42-winx64 - 2/"basedir="D:/ProgrammingTool/DataManagementTool/mysql-5.6.42-winx64 - 2/"# 配置数据存储根目录datadir="D:/ProgrammingTool/DataManagementTool/mysql-5.6.42-winx64 - 2/data/"character-set-server=gbkdefault-storage-engine=MyISAMsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES# 配置最大链接数max_connections=512server_id=2log-bin=mysql-binreplicate-do-db=office_dev主库执行语句建立拥有复制权限用户GRANT REPLICATION SLAVE ON *.* TO '{用户名}'@'{主库ip地址}' identified by '{密码}';eg: GRANT REPLICATION SLAVE ON *.* TO 'slave'@'127.0.0.1' identified by'123456';FLUSH PRIVILEGES; # 刷新数据库
查看主库参数:
show master status;
设置从库链接到主库
1. STOP SLAVE; # 中止主从复制2. change master to master_host='127.0.0.1', master_user='slave',master_password='root96077',master_log_file='master-bin.000004',master_log_pos=2657;注:master_host:主服务器Ubuntu的ip地址master_log_file: 前面查询到的主服务器日志文件名master_log_pos: 前面查询到的主服务器日志文件位置3. START SLAVE; # 启动主从复制4. 使用 SHOW SLAVE STATUS 查看链接参数