mariadbマスタースレーブレプリケーション(マスターデータベースにはすでにデータがあります)

会社の実稼働環境の特定のデータベースは、マスターデータベースの既存のデータに基づいてマスタースレーブレプリケーションを実行する必要があります。実稼働環境に関しては、注意が必要なので、最初にテスト環境でテストして記録します。ちなみに操作プロセス。

1.スレーブデータベースをインストールします

メインライブラリはすでに存在し、イントラネットIPは10.200.9.183であり、スレーブライブラリは10.200.9.188で構築する準備ができています。

(1)データベース圧縮パッケージをダウンロードして解凍します

使用されるデータベースのバージョンはmariadb-10.0.33、ダウンロード方法です。

wget https://downloads.mariadb.com/MariaDB/mariadb-10.0.33/bintar-linux-x86_64/mariadb-10.0.33-linux-x86_64.tar.gz

データベース圧縮パッケージを解凍します。

tar  -xzvf  mariadb-10.0.33-linux-x86_64.tar.gz 

指定された場所に移動します。

mv mariadb-10.0.33-linux-x86_64 /data/mariadb-10.0.33

(2)構成の変更

/ etcの下にあるデフォルトのデータベース構成ファイルをバックアップします。

mv /etc/my.cnf  /etc/my.cnf.bak

データベース内の構成ファイルテンプレートを/ etc /にコピーします

cp support-files/my-innodb-heavy-4G.cnf  /etc/my.cnf

構成ファイルの編集

vim /etc/my.cnf

以下を変更します

basedir=/data/mariadb-10.0.33
datadir=/data/mariadb-10.0.33/data

(3)mysqlユーザーを作成し、権限を変更します

mysqlユーザーを作成します。

useradd -s /sbin/nologin -M mysql

すべてのmysqlファイルのユーザーとグループをmysqlに変更します

chown -R mysql:mysql /data/mariadb-10.0.33

mysqlを初期化するためのユーザーとファイルのパスを指定します

./scripts/mysql_install_db  --basedir=/data/mariadb-10.0.33 --datadir=/data/mariadb-10.0.33/data/ --user=mysql

(4)mysqlを起動するように起動スクリプトを設定します

MariaDBは起動スクリプトを提供します。インストールディレクトリのsupport-filesディレクトリで、ファイル名はmysql.serverであり、/ etc /init.dにコピーします。

cp support-files/mysql.server /etc/rc.d/init.d/mysqld

mysqlを起動します

/etc/init.d/mysqld start

または

service mysqld start

mysqlスタートアップセルフスタート設定:

chkconfig --add mysqld
chkconfig mysqld on

mysqlがスタートアップリストに追加されているかどうかを確認します。

chkconfig --list

以下に示すように、追加は成功します
ここに画像の説明を挿入

(5)mysql rootユーザー認証:

mysqlにログインします

/data/mariadb-10.0.33/bin/mysql -u root

承認:

grant all privileges on *.* to 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'localhost' identified by '123456';
grant all privileges on *.* to 'root'@'127.0.0.1' identified by '123456';

権限の更新:

flush privileges;

(6)mysqlコマンドを環境変数に追加します

/ etc / profileファイルを編集します。

vim /etc/profile

最後の行に以下を追加します

export PATH=$PATH:/data/mariadb-10.0.33/bin

環境変数を更新する

source /etc/profile

2.メインライブラリの設定

(1)メインライブラリ構成ファイルを編集します。

vim /etc/my.cnf

binlogファイル名を構成します。

log-bin = mysql-bin

サーバーIDを設定します(サーバーIDは一意である必要があり、ライブラリから複製することはできません)。

server-id = 1

特定のデータベースのみを同期するようにマスター/スレーブ同期を設定します

binlog-do-db = newenergy

binlogの有効期限を設定します。

expire_logs_days = 2

ログ形式を設定する

binlog_format = mixed
  • ステートメントはSQLステートメントを保存します
  • 行は影響レコードデータを保存します
  • 最初の2つの組み合わせ
    をmxedモードに設定することをお勧めします

(2)コピー権限を持つアカウントを作成する

IPはライブラリIPからのものです

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@' 10.200.9.188' IDENTIFIED BY 'replpass';

権限の更新

FLUSH PRIVILEGES;

データベースを再起動します

service mysqld restart

4.ライブラリから設定

(1)ライブラリから構成ファイルを編集します

vim /etc/my.cnf

リレーログの設定relay-log

relay-log = relay-bin

サーバーIDを設定します(サーバーIDは一意である必要があり、メインライブラリや他のスレーブライブラリと競合することはできません)。

server-id = 2

(2)データベース
サービスを再起動しますmysqld restart

5.データベースからメインデータベースを同期します

(1)メインライブラリをロックして、読み取り専用の権限のみを持つようにします。

flush table with read lock;

(2)マスターステータスを確認し、バックアップポイントを記憶します

ここに画像の説明を挿入
赤いボックスの内容を保存して記録する必要があり、この場所からバックアップが開始されます。

(3)メインデータベースをバックアップします

同期されるデータベースは1つだけなので、この1つのデータベースをバックアップするだけで十分です。

mysqldump -uroot -p123456 newenergy > newenergy.sql

(4)テーブルのロックを解除する

unlock tables;

(5)ライブラリからバックアップをインポートします

mysql -uroot -p123456
source newenergy.sql

(6)図書館から本館へ

SQLステートメント「CHANGEMASTERTO」を使用して、関連する構成を変更することをお勧めします。主な変更は次のとおりです。

  • master_host:マスターホストIP
  • master_port:マスターデータベースのポート
  • master_user:認証のためにマスターに接続するためにスレーブが使用するユーザー名
  • master_password:認証のためにマスターに接続するためにスレーブが使用するパスワード
  • master_log_file:マスターバイナリログの名前
  • master_log_pos:スレーブが複製を開始するバイナリログの開始位置

後者の2つのパラメータmaster_log_fileとmaster_log_posの設定内容は、showmasterステータス中に以前に保持する必要があったFileとPositionの内容です。
スレーブデータベースにログインします

mysql -u root -p123456

メインライブラリに接続します

 CHANGE MASTER TO MASTER_HOST='10.200.9.183',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='mysql-bin.000002',master_port=3307,MASTER_LOG_POS=154;

(7)スレーブを起動します

start slave;

(8)スレーブステータスの表示

show slava status\G;

以下に示すように、Slave_SQL_RunningとSlave_IO_Runningの両方がYesを示し、スレーブがマスターに正常に接続したことを証明します。
ここに画像の説明を挿入

(9)トラブルシューティング

Slave_IO_Runningがyesを表示しない場合、図に示すように、Last_IO_Errorはエラーの原因を表示し
ここに画像の説明を挿入ますここでは、テーブル名のマスタースレーブデータベースのserver-idが複製されており、server-idの1つが重複している必要があります。変更して再起動しました。
ここに画像の説明を挿入これは、メインデータベースに接続できないことを意味します。これは、メインデータベースポートの障害または到達不能なIPが原因である可能性があります。スレーブライブラリをマスターライブラリに接続できるか確認してください。

6.同期が成功したかどうかを確認します

メインライブラリのnewenergyデータベースにテーブルを作成するか、フィールドを追加すると、スレーブライブラリに表示され、同期が成功したことが示されます。Seconds_Behind_Masterの値を表示して、同期の遅延を確認することもできます。

おすすめ

転載: blog.csdn.net/xiguashixiaoyu/article/details/107062462