MySql主从搭建
最后更新于:2022-04-01 23:52:24
:-: **MySql主从搭建 Windows**
> ## 在MySQL5.7新版本中 不推荐修改my.cnf或者my.ini
[主从搭建原文跳转--亲测可用](https://blog.csdn.net/pz_winner/article/details/78296085)
> 主库master
找到 mysql中的 my.ini 文件 寻找 [mysqld] 一般在末尾
添加如下代码
```
[mysqld]
port = 3306
;数据库ID号, 为1时表示为Master,其中master_id必须为1到232–1之间的一个正整数值;
server-id = 1
;启用二进制日志;
log-bin = mysql-bin
;需要同步的二进制数据库名;
binlog-do-db = test
;不同步的二进制数据库名,如果不设置可以将其注释掉;
;binlog-ignore-db = information_schema
;binlog-ignore-db = mysql
;binlog-ignore-db = personalsite
;binlog-ignore-db = test
;设定生成的log文件名;
log-bin = "binLog"
;把更新的记录写到二进制文件中;
log-slave-updates
```
**如果有 Navicat 数据库管理工具 直接在主库添加一个用户组 **
**我的用户为 **
**用户名称:slave**
**主机地址:从库地址**
**密码:********
**权限:file、reload、replication Slave、super**
> 也可使用命令
**> 注意:创建用户时,不推荐之间grant生成用户 ;应该先create创建用户 然后 grant授权用户**
```
创建用户
——不推荐使用——
IP:192.168.1.100 或 192.168.1.%匹配整个1网段
grant replication slave on *.* to '用户名'@'从库IP' identified by '密码';
——推荐——
先创建用户
create user '用户名'@'从库IP' identified by '密码';
授权用户
grant replication slave on *.* to 用户名@'从库IP';
```
```
mysql> GRANT REPLICATION SLAVE,RELOAD,SUPER,FILE ON *.*
TO {mysql_backup主库地址}@'%'
IDENTIFIED BY '{密码}';
```
**注:命令执行完成之后要刷新用户组**
```
mysql> flush privileges;
```
****
****
> 从库
去 my.ini 文件中
```
[mysqld]
port = 3306
server-id=2
log-bin=mysql-bin
relay-log=relay-bin
relay-log-index=relay-bin-index
replicate-do-db=test
```
> server_id是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置bin_log。在这里,我们开启了二进制日志,而且显示的命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。
relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。
有些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。所以,尽量使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。
> 停止从库
```
mysql> stop slave;
```
> 链接主库
```
mysql> CHANGE MASTER TO master_host = '127.0.0.1',
master_user = 'mysql_backup',
master_password = '123456',
# master_log_file = 'mysql-bin.000008',
# master_log_pos = 120;
```
**注意:加#的参数在上图的show master status \G;中找 去主库中执行此命令**
> 启动从库
```
Start slave
```
> 查看从库状态
```
Show slave status
```
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/e6297f7da0a183cf2cbfd20454cd45bb_925x839.png)
显示都为yes 就搭建成功了
';