mysql的主从复制实现

送 Doris 限量T恤,快来围观!>>> hot3.png

​mysql 主从复制原理

Mysql 的 binlog 日志重现的原理。binlog 会记录下所有修改了数据库的SQL 语句insert,update,delete,create,alter,drop table, grant 等等。

主从复制的原理其实就是把主服务器上的 bin 日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。

复制流程图:

640?wx_fmt=png

主从复制配置过程:

主节点:

1. 启用二进制日志。

2. 为当前节点设置一个全局唯一的server_id。

3. 创建有复制权限的用户账号 REPLIACTION SLAVE ,REPLIATION,CLIENT。

从节点:

1. 启动中继日志。

2. 为当前节点设置一个全局唯一的server_id。

3. 使用有复制权限的用户账号连接至主节点,并启动复制线程。

Mysql多实例搭建(Windows环境)

  1. 复制安装成功的mysql实例

修改my.ini文件

640?wx_fmt=png

[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文件下执行安装服务

640?wx_fmt=png

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服务

640?wx_fmt=png

4. 测试连接

640?wx_fmt=png

主从复制参数配置流程

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 查看连接参数

640?wx_fmt=png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值