Colderleo's blog Colderleo's blog
首页
Linux
C++
Python
前端
工具软件
mysql
索引
关于
GitHub (opens new window)

Colder Leo

热爱代码的打工人
首页
Linux
C++
Python
前端
工具软件
mysql
索引
关于
GitHub (opens new window)
  • binlog主从备份
  • binlog主从同步
    • 一、准备工作:
    • 二、主数据库master修改:
    • 三、从服务器slave修改:
    • 取消主从复制
  • 7和设置密码、访问权限
  • create database指定字符集
  • cnf 配置文件位置
  • mysql group by 分组后取最大值
  • mysql workbench社区版
  • select update
  • 7
  • 插入数据时忽略重复的key
  • 创建临时表
  • 入门学习
  • 索引的使用
  • 通过select插入
  • 性能优化-mysql全局设置
  • 修改字段顺序
  • 插入
  • mysql
gaoliu
2021-10-06
目录

binlog主从同步

参考:https://blog.csdn.net/Virgil_K2017/article/details/90382201 (opens new window)

次参考:https://blog.csdn.net/demonson/article/details/80526533 (opens new window)

# 一、准备工作:

1.主从数据库版本最好一致
2.主从数据库内数据保持一致
主数据库:182.92.172.80 /linux
从数据库:123.57.44.85 /linux

1
2
3
4
5

# 二、主数据库master修改:

1.修改mysql配置 找到主数据库的配置文件my.cnf(或者my.ini),我的在/etc/mysql/my.cnf,在[mysqld]部分插入如下两行:

log-bin=mysql-bin #开启二进制日志
server-id=1 #设置server-id

# 其他设置
binlog_format = mixed
expire_logs_days = 8
; log_bin_trust_function_creators = 1
sync_binlog=0
max_binlog_size=512M
1
2
3
4
5
6
7
8
9

2.重启mysql,创建用于同步的用户账号 打开mysql会话shell>mysql -hlocalhost -uname -ppassword 创建用户并授权:用户:rel1密码:slavepass

mysql> CREATE USER 'repl'@'123.57.44.85' IDENTIFIED BY 'slavepass';#创建用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'123.57.44.85';#分配权限
mysql>flush privileges;   #刷新权限
1
2
3

3.查看master状态,记录二进制文件名(mysql-bin.000003)和位置(73):

mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73       | test         | manual,mysql     |
+------------------+----------+--------------+------------------+

1
2
3
4
5
6
7

# 三、从服务器slave修改:

# 1.修改mysql配置

同样找到my.cnf配置文件,添加server-id

server-id=2 #设置server-id,必须唯一

1
2

# 2.重启mysql,打开mysql会话,执行同步SQL语句(需要主服务器主机名,登陆凭据,二进制文件的名称和位置):

CHANGE MASTER TO
MASTER_HOST='182.92.172.80',
MASTER_USER='rep1',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=73;

1
2
3
4
5
6
7

# 3.启动slave同步进程:

mysql>start slave;

1
2

# 4.查看slave状态:

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 182.92.172.80
                  Master_User: rep1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000013
          Read_Master_Log_Pos: 11662
               Relay_Log_File: mysqld-relay-bin.000022
                Relay_Log_Pos: 11765
        Relay_Master_Log_File: mysql-bin.000013
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
        ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了。接下来就可以进行一些验证了,比如在主master数据库的test数据库的一张表中插入一条数据,在slave的test库的相同数据表中查看是否有新增的数据即可验证主从复制功能是否有效,还可以关闭slave(mysql>stop slave;),然后再修改master,看slave是否也相应修改(停止slave后,master的修改不会同步到slave),就可以完成主从复制功能的验证了。

还可以用到的其他相关参数:

master开启二进制日志后默认记录所有库所有表的操作,可以通过配置来指定只记录指定的数据库甚至指定的表的操作,具体在mysql配置文件的[mysqld]可添加修改如下选项:

# 不同步哪些数据库  
binlog-ignore-db = mysql  
binlog-ignore-db = test  
binlog-ignore-db = information_schema  
  
# 只同步哪些数据库,除此之外,其他不同步  
binlog-do-db = game

1
2
3
4
5
6
7
8

如之前查看master状态时就可以看到只记录了test库,忽略了manual和mysql库。

# 取消主从复制

Mysql取消主从复制很简单。只需在其要终止同步的Server上【一般是Slave】执行下面语句即可:

stop slave;
reset slave;
1
2
编辑 (opens new window)
上次更新: 2023/05/07, 17:27:54
binlog主从备份
7和设置密码、访问权限

← binlog主从备份 7和设置密码、访问权限→

最近更新
01
通过模板实现结构体成员拷贝-按成员名匹配
05-07
02
c++17通过模板获取类成员的个数
05-01
03
avx-sse切换惩罚
04-30
更多文章>
Theme by Vdoing | Copyright © 2019-2023 Colder Leo | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×