MySQLマスターマスターバックアップ


1.構成

CentOSデータベース
ポート:3306
アドレス:106.11.111.11

Dockerデータベース
ポート:3307
アドレス:106.11.111.12

リソースが限られているため、テスト用に2つのデータベースを設定する必要がありました。通常の状況では、少なくとも2台のサーバーが操作に使用されます。

操作の手順は同じです。コンテナを使用していてもかまいません。マスタースレーブデータベースでは、最初に2つの同一のデータベースを構築します

CentOSデータベースがインストールされました

コンテナデータベースを実行するには、https//blog.csdn.net/qq_38637558/article/details/101231395を参照して
ください。

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

2.メインライブラリを構成します:106.11.111.11

my.cnfを変更すると
、私の場所は/ 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不会对创建存储函数实施这些限制。 此变量也适用于触发器的创建。

ここに画像の説明を挿入します

# 重启MySQL
service mysqld restart

アカウントを作成する

# 进入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;  

マスターステータスを確認し、バイナリファイル名(mysql_bin.000001)と場所(120)を記録します。

show master status;

ここに画像の説明を挿入します

3.メインライブラリを構成します:106.11.111.12

実際、このメインライブラリを構成し、上記のメインライブラリを構成するのは同じ操作です。基本的に違いはありませんが、my.cnfファイルは異なります。
注:server-idとauto-increment-offsetは2つの値です。

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不会对创建存储函数实施这些限制。 此变量也适用于触发器的创建。

ここに画像の説明を挿入します

# 重启MySQL
service mysqld restart

アカウントを作成する

# 进入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;  

マスターステータスを確認し、バイナリファイル名(mysql_bin.000001)と場所(786)を記録します。

show master status;

ここに画像の説明を挿入します

4.マスターの構成を開始します

私は今データベースにいます:106.11.111.12

MySQLを入力してください

同期SQLステートメントを実行します。

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;

ここに画像の説明を挿入します

启动slave同步进程:
start slave;

查看slave状态:
show slave status\G

ここに画像の説明を挿入します
これらの2つが「はい」の場合、1つが成功したことを証明します
-------------------------------------- -------------------------------...---------------- ---------------------------------------

今度は別のものを設定します、私は今データベースにいます:106.11.111.11

手順は、ユーザー名、パスワード、ポートなどを変更できることを除いて、上記と同じです。

MySQLを入力して
、同期SQLステートメント実行します。

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

ここに画像の説明を挿入します
これらの2つが「はい」の場合、別の1つで成功したことを証明します。

-------------------------------------------------- -------------------...---------------------------- ------------
この時点で私たちのマスターは成功しました

5.検証を開始します

データベース:106.11.111.11で、データに対してCURD操作を実行すると、データベース106.11.111.12が一緒に更新されます。
データベース:106.11.111.12でも、データに対してCURD操作を実行すると、データベース106.11.111.11も更新されます。一緒に更新されます。
この場所ではスクリーンショットを撮りません。

6、雑談

実際、マスター-マスターバックアップの原理はマスター-スレーブバックアップと同じです。基本的に同じです。マスター-スレーブを知っていれば、当然マスター-スレーブを知っているでしょう。
メインマスターは実際に片側を構成し、反対側は基本的に繰り返し操作です。これはいくつかのキーデータを変更するだけです。



次に、ユーザー名、パスワード、バイナリファイル名、およびコピーを開始する場所に注意してください。これらのエラーを入力しなくても問題はありません



。問題には特別な注意が必要です。メインバックアップをオンにするときは、データベースの関数呼び出しに注意する必要があります。関数の呼び出し時に問題が発生する可能性があります。 。解決策については、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






さようなら、さようなら!
前:マスタースレーブバックアップ

次へ:バックアップファイルを定期的にクリアする

グループを提供する:807770565、誰もが参加してチャットすることを歓迎します
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_38637558/article/details/101321337