会社の実稼働環境の特定のデータベースは、マスターデータベースの既存のデータに基づいてマスタースレーブレプリケーションを実行する必要があります。実稼働環境に関しては、注意が必要なので、最初にテスト環境でテストして記録します。ちなみに操作プロセス。
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の値を表示して、同期の遅延を確認することもできます。