Sauvegarde maître MySQL


1. Configuration

Une base de données centos
Port: 3306
Adresse: 106.11.111.11

Une base de données docker
Port: 3307
Adresse: 106.11.111.12

En raison de ressources limitées, nous avons dû mettre en place deux bases de données pour les tests. Dans des circonstances normales, au moins deux serveurs sont utilisés pour le fonctionnement.

Les étapes de l'opération sont les mêmes, peu importe que j'utilise un conteneur. Dans la base de données maître-esclave, je vais d'abord construire deux bases de données identiques

La base de données centos a été installée

Pour exécuter la base de données de conteneurs, vous pouvez vous référer à:
https://blog.csdn.net/qq_38637558/article/details/101231395

# 首先检查主从两台Mysql是否作为其他master的slave,并停止复制,以免受到影响。
show slave status\G
stop slave;   

2. Configurez la bibliothèque principale: 106.11.111.11

Modifiez my.cnf et
mon emplacement est: / usr / local / mysql

vim my.cnf

[mysqld]
server-id=1                       #指定master主机的id,不可为0,否则拒绝所有slave连接。
log-bin=mysql_bin                  #指定bin-log文件前缀名称,开启binlog日志
binlog_do_db=nestcloud        #指定binlog日志是记录的是哪个库 (nestcloud是我的数据库名)
replicate-do-db=nestcloud       #指定复制哪一个库(nestcloud是我的数据库名)
auto-increment-increment = 2   #每次增长2
auto-increment-offset = 1  #设置自动增长的字段的偏移量,即初始值为1
log_bin_trust_function_creators=1           #下面进行解释
expire_logs_days = 10            #保留10天的bin_log日志,防止日志太多占用磁盘空间
max_binlog_size = 100M              #限制每个bin_log日志大小最大为100M。
#log-slave-updates=1        #slave执行master的sql后,将sql记录在binlog日志中(默认是不记录的)——实际生产我没开启这条
max_connections=600             #指定最大连接数
wait_timeout=5                       #等待超时


log_bin_trust_function_creators: 
当二进制日志启用后,这个变量就会启用。它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。
如果设置为0(默认值),用户不得创建或修改存储函数,除非它们具有除CREATE ROUTINE或ALTER ROUTINE特权之外的SUPER权限。
如果变量设置为1,MySQL不会对创建存储函数实施这些限制。 此变量也适用于触发器的创建。

Insérez la description de l'image ici

# 重启MySQL
service mysqld restart

Créer un compte

# 进入MySQL
mysql -h127.0.0.1 -uroot -p
#创建用户 106.11.111.12  (从服务器的IP)
CREATE USER 'sla'@'106.11.111.12' IDENTIFIED BY 'password123';
#分配权限
GRANT REPLICATION SLAVE ON *.* TO 'sla'@'106.11.111.12';
 #刷新权限
flush privileges;  

Vérifiez l'état du maître et enregistrez le nom du fichier binaire (mysql_bin.000001) et l'emplacement (120):

show master status;

Insérez la description de l'image ici

3. Configurez la bibliothèque principale: 106.11.111.12

En fait, nous configurons cette bibliothèque principale, et configurer la bibliothèque principale ci-dessus est la même opération. En gros, il n'y a pas de différence, mais le fichier my.cnf est différent.
Remarque: id-serveur et décalage-incrémentation automatique sont les deux valeurs

vim my.cnf

[mysqld]
server-id=2                       #该值不能不可为0,并且所操作数据库的该值也不能一样
log-bin=mysql_bin                  #指定bin-log文件前缀名称,开启binlog日志
binlog_do_db=nestcloud        #指定binlog日志是记录的是哪个库 (nestcloud是我的数据库名)
replicate-do-db=nestcloud       #指定复制哪一个库(nestcloud是我的数据库名)
auto-increment-increment = 2   #每次增长2
auto-increment-offset = 2  #该值应设为操作的数据库的总数,本案例用到两台服务器,所以值设为2。
log_bin_trust_function_creators=1           #下面进行解释
expire_logs_days = 10            #保留10天的bin_log日志,防止日志太多占用磁盘空间
max_binlog_size = 100M              #限制每个bin_log日志大小最大为100M。
#log-slave-updates=1        #slave执行master的sql后,将sql记录在binlog日志中(默认是不记录的)——实际生产我没开启这条
max_connections=600             #指定最大连接数
wait_timeout=5                       #等待超时


log_bin_trust_function_creators: 
当二进制日志启用后,这个变量就会启用。它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。
如果设置为0(默认值),用户不得创建或修改存储函数,除非它们具有除CREATE ROUTINE或ALTER ROUTINE特权之外的SUPER权限。
如果变量设置为1,MySQL不会对创建存储函数实施这些限制。 此变量也适用于触发器的创建。

Insérez la description de l'image ici

# 重启MySQL
service mysqld restart

Créer un compte

# 进入MySQL
mysql -h127.0.0.1 -uroot -p
#创建用户 106.11.111.12  (从服务器的IP)
CREATE USER 'sla2'@'106.11.111.12' IDENTIFIED BY 'password123';
#分配权限
GRANT REPLICATION SLAVE ON *.* TO 'sla2'@'106.11.111.12';
 #刷新权限
flush privileges;  

Vérifiez l'état du maître et enregistrez le nom du fichier binaire (mysql_bin.000001) et l'emplacement (786):

show master status;

Insérez la description de l'image ici

4. Commencez à configurer le maître

Je suis maintenant dans la base de données: 106.11.111.12

Entrez MySQL

Exécutez une instruction SQL synchrone:

mysql> CHANGE MASTER TO
    -> MASTER_HOST='106.11.111.11',
    -> MASTER_USER='sla',
    -> MASTER_PASSWORD='password123',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='mysql_bin.000001',
    -> MASTER_LOG_POS=120;

MASTER_HOST:106.11.111.11 数据库地址
MASTER_USER:106.11.111.11 用户名
MASTER_PASSWORD:106.11.111.11 密码
MASTER_PORT:106.11.111.11 端口,如果是3306可以不写
MASTER_LOG_FILE:106.11.111.11 指定开始复制的binlog二进制文件。
MASTER_LOG_POS:106.11.111.11 指定(在master二进制文件中)要开始复制的位置

# 整合成一段
CHANGE MASTER TO MASTER_HOST='106.11.111.11', MASTER_USER='sla', MASTER_PASSWORD='password123', MASTER_PORT=3306, MASTER_LOG_FILE='mysql_bin.000001', MASTER_LOG_POS=120;

Insérez la description de l'image ici

启动slave同步进程:
start slave;

查看slave状态:
show slave status\G

Insérez la description de l'image ici
Quand ces deux sont oui, cela prouve que l'un est réussi
-------------------------------------- -------------------------------...---------------- - ----------------------

Maintenant, configurez-en un autre, je suis maintenant dans la base de données: 106.11.111.11

Les étapes sont les mêmes que ci-dessus, sauf que le nom d'utilisateur, le mot de passe, le port, etc. peuvent être modifiés.

Entrez MySQL pour
exécuter des instructions SQL synchrones:

CHANGE MASTER TO MASTER_HOST='106.11.111.12', MASTER_USER='sla2', MASTER_PASSWORD='password123', MASTER_PORT=3307, MASTER_LOG_FILE='mysql_bin.000001', MASTER_LOG_POS=786;


MASTER_HOST:106.11.111.12的 数据库地址
MASTER_USER:106.11.111.12的 用户名
MASTER_PASSWORD:106.11.111.12的 密码
MASTER_PORT:106.11.111.12的 端口,如果是3306可以不写
MASTER_LOG_FILE:106.11.111.12的 指定开始复制的binlog二进制文件。
MASTER_LOG_POS:106.11.111.12的 指定(在master二进制文件中)要开始复制的位置
启动slave同步进程:
start slave;

查看slave状态:
show slave status\G

Insérez la description de l'image ici
Quand ces deux sont oui, cela prouve que nous avons réussi un autre

-------------------------------------------------- -------------------...---------------------------- - ---------- À
ce stade, notre maître a réussi

5. Démarrez la vérification

Dans la base de données: 106.11.111.11, effectuez des opérations CURD sur les données, et la base de données 106.11.111.12 sera mise à jour ensemble.
Également dans la base de données: 106.11.111.12, effectuez des opérations CURD sur les données, et la base de données 106.11.111.11 sera également être mis à jour ensemble.
Je ne prendrai pas de capture d'écran à cet endroit.

6, discussion divers

En fait, le principe de la sauvegarde maître-maître est le même que celui de la sauvegarde maître-esclave, c'est fondamentalement le même. Si vous connaissez maître-esclave, vous connaissez naturellement maître-esclave.
Le maître principal est en train de configurer un côté, et l'autre côté consiste essentiellement en des opérations répétées. Il ne s'agit que de modifier certaines données clés.



Faites alors attention au nom d'utilisateur, au mot de passe, au nom du fichier binaire et à l'emplacement où commencer la copie. Si vous ne remplissez pas ces erreurs, il n'y aura pas de problème



. Le problème nécessite une attention particulière. Lorsque nous activons la sauvegarde principale, nous devons faire attention à l'appel de fonction de la base de données. Il peut y avoir des problèmes lors de l'appel de la fonction Pour obtenir des solutions, veuillez consulter:
https://blog.csdn.net/lost_in_the_woods/article/details/81589294 https://blog.csdn.net/lost_in_the_woods/article/details/81589294
https: //blog.csdn. net / topasstem8 / article / details / 8216740






Bon, tant pis , au revoir!
Précédent: Sauvegarde maître-esclave

Suivant: Effacez régulièrement les fichiers de sauvegarde

Fournissez un groupe: 807770565, invitez tout le monde à venir discuter
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_38637558/article/details/101321337
conseillé
Classement