Linuxのインストールmysql8とマスタースレーブの同期を実現します

サーバーの準備

レディーサーバーServer1とServer2が、それは同じサーバのMySQLの言葉にインストールされている場合、そのポートを変更する必要があります。

アンインストールのmysql

あなたはmysqlは最初のチェックがホストにインストールされていない必要がありますインストールする前にインストールした場合、あなたは最初にアンインストールする必要があります。

MySQLをインストールします。

ダウンロードパッケージ:

wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

ローカルインストール:

yum localinstall mysql80-community-release-el7-1.noarch.rpm

MySQLをインストールします。

yum install mysql-community-server

ブートするために:

systemctl enable mysqld

systemctl daemon-reload

MySQLの起動します。

systemctl start mysqld

良いmysql8をインストールするには、上記の手順。

mysqlのの仮パスワードを取得します。

grep 'temporary password' /var/log/mysqld.log

ログインmysqlの:

mysql -uroot -p

あなたが取得をログに記録することができます前に、一時的なパスワードを入力し、パスワードの入力が求められます。

この時点では、MySQLのパスワードを変更する必要があり、さもなければ、あなたのパスワードを変更する必要があるプロンプトの後にステップすることを余儀なくされます。

ALTER USER 'root'@'localhost' IDENTIFIED BY '121b33dAj934J1^Sj9ag';

mysql8のデフォルトパスワードの強度上の要件がありますが、あなたは少し複雑に設定する必要があり、そうでない場合、エラーを促すメッセージが表示されます。

設定を更新します:

FLUSH PRIVILEGES;

マスタースレーブ構成

必要性は、2つのMySQLデータベースの一貫性のあるマスター・スレーブ構成を確実にするために前の状態を同期します。

主要

デフォルトの設定ファイルで/etc/my.cnf下。

設定ファイルの新しいコンフィギュレーション:

[mysqld]
## 同一局域网内注意要唯一
server-id=100  
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin

設定を変更した後を有効にするには再起動する必要があります。

service mysql restart

一度MySQLを再起動:

mysql -uroot -p

データベースからのデータとの間の一次同期するためのユーザ権限をスレーブレプリケーションスレーブと複製クライアント権限を付与し、マスタ・データベース・データの同期にユーザーを作成します。

CREATE USER 'slave'@'%' IDENTIFIED BY '@#$Rfg345634523rft4fa';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

声明%すべてのサーバのユーザに代わっては、あなたが特定のIPアドレスを指定したい場合は、ます、これを使用することができ%、IPに変更します。

メインのMySQLのステータスを確認します。

show master status;

これは、記録されたFilePosition値、および避けるために他の操作を実行しないPosition変更を。

から

my.cnf、新しいコンフィギュレーション:

mysqld]
## 设置server_id,注意要唯一
server-id=101  
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin   
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin  

設定を変更した後を有効にするには再起動する必要があります。

service mysql restart

一度MySQLを再起動:

mysql -uroot -p

change master to master_host='172.17.0.2', master_user='slave', master_password='@#$Rfg345634523rft4fa', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=30;

MASTER_HOST:マスター住所

MASTER_PORT:ポート番号のマスター

MASTER_USER:同期のためのユーザデータ

master_password:ユーザーのパスワードを同期するために使用

MASTER_LOG_FILE:スレーブはすなわち、上記のフィールド値をファイル、ログファイル、そこからデータのコピーを開始指定

MASTER_LOG_POSの位置、位置すなわち上記フィールドの読み出しを開始するための値。

MASTER_CONNECT_RETRY:接続に失敗した場合は、再試行間隔、秒単位で、デフォルトは60秒です

MySQLのマスタ - スレーブ同期状態から見て:

show slave status \G;

私たちはマスタースレーブのレプリケーションプロセスをオンにしていないので、この時点でSlaveIORunningとSlaveSQLRunningは、いいえです。

オープンマスタースレーブのレプリケーション:

start slave;

再び同期ステータスを表示します。

show slave status \G;

はいSlaveIORunningとSlaveSQLRunningは、メインの説明はコピーからなっているです。

SlaveIORunningが接続されている場合は、次のような理由の4種類があります。

1、ネットワークは、IPポートをチェック

2、パスワードが間違っている、同期ユーザ名とパスワードを確認します

3、POSの間違った、位置のマスターをチェックします

パスワード規則によって引き起こさ4、mysql8具体的な問題:

ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '@#$Rfg345634523rft4fa';

mysql_native_password:パスワード規則に変更します

あなたはマスター・スレーブ同期したいデータベースを指定する必要がある場合は、マスターできるmy.cnf追加の設定を:

binlog-do-db:指定mysql的binlog日志记录哪个db

またはスレーブmy.cnf構成を追加:

replicate-do-db=需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可 replicate-ignore-db=需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可

あなたは、すべてのデータベーステーブルを同期するとMySQLの実装にしたい場合は:

STOP SLAVE SQL_THREAD;
CHANGE REPLICATION FILTER REPLICATE_DO_DB = ();
start SLAVE SQL_THREAD;

上記の手順で問題が発生した場合は、ログを表示することができます。

/etc/log/mysqld.log

ます。https://www.jianshu.com/p/4786164c1c09で再現

おすすめ

転載: blog.csdn.net/weixin_34288121/article/details/91300771