MySQL マスター/スレーブ ライブラリの設定方法
まず、mysql データベースのグリーン インストール パッケージ (ダウンロード アドレス) をダウンロードし、2 つのコピーに解凍します。1 つは mysql マスター ライブラリ (D:/mysql/mysql5.6.17)、もう 1 つは mysql スレーブです。ライブラリ (D:/mysql/mysql5.6.17_slave)
[1]、メインライブラリ my.ini 設定情報
server-id = 1
port=3306
basedir=D:/mysql/mysql5.6.17
datadir=D:/mysql/mysql5.6.17/data
explicit_defaults_for_timestamp = TRUE
binlog-do-db=test
#binlog-do-db=需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
#binlog-ignore-db=不需要复制的数据库名,如果不需要复制多个数据库,重复设置这个选项即可
[1.1]、cmd を開き、最初に (cd) メイン ライブラリの bin ディレクトリに入り、次のコマンドを使用してメイン ライブラリ サービスをインストールします。
mysqld install mysql1 --defaults-file="D:\mysql\mysql5.6.17\my.ini
[1.2]、[コントロール パネル] -> [サービス] に移動してメイン データベース サービスを開始します
[1.3]、最初に次のコマンドを使用してメイン データベースに接続します。
mysql -uroot -p -P3306
[1.4] 同期ユーザーの作成
create user 'syncuser'@'127.0.0.1' identified by '123456';
[1.5] 同期ユーザー権限の割り当て
grant replication slave on *.* to 'syncuser'@'127.0.0.1' identified by '123456';
[1.6]、コマンドを使用して: show master status、マスター ライブラリのステータスを確認します (クエリ フィールド: File および Position、これら 2 つのフィールドはそれぞれ [3.4] のコマンド パラメータ master_log_file および master_log_pos に対応します)。
[2] ライブラリ my.ini からの構成情報
ライブラリ my.ini からの構成情報
[mysqld]
port= 3307
basedir=D:/mysql/mysql5.6.17_slave
datadir=D:/mysql/mysql5.6.17_slave/data
skip-slave-start
server-id = 2
[2.1] cmd を開き、最初に (cd) メイン ライブラリの bin ディレクトリに入り、次にコマンドを使用してライブラリからサービスをインストールします。
mysqld install mysql2 --defaults-file="D:\mysql\mysql5.6.17_slave\my.ini
[3]、マスター/スレーブ設定を構成します
[3.1]、まずスレーブ ライブラリのデータ ディレクトリにある auto.cnf の uuid を変更します (uuid の数が 36 ビットであることを確認してください) (または、uuid を直接削除します)スレーブ ライブラリ サービスを開始します (時間に自動的に生成されます) (uuid エラーの繰り返しを防ぐため)
[3.2]、[コントロール パネル] -> [サービス] に移動してデータベース サービスを開始します
[3.3]、まずコマンドを使用して、スレーブライブラリ:
mysql -uroot -p -P3307
[3.4] 接続に成功したら、次のコマンドを入力します。
mysql>change master to master_host='127.0.0.1',master_port=3306,master_user='syncuser',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=498;
[3.5]、マスター/スレーブ レプリケーション機能を開始し、次のコマンドを入力します。
start slave;
[3.6]、スレーブ ライブラリのステータスを確認し、次のコマンドを入力します。
mysql>show slave status;
Slave_IO_Running | Slave_SQL_Running フィールドの値が両方とも Yes の場合、構成は成功です。
-----設定に問題がある場合は、ライブラリ mysql2 のデータ内で err で終わるログを確認できます。
[4] テスト検証
[4.1] メインデータベース上でデータベース作成スクリプトを実行
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`account` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
INSERT INTO `user` VALUES (1, 'user1', 'user1', 'user1');
INSERT INTO `user` VALUES (2, 'user2', 'user2', 'user2');
INSERT INTO `user` VALUES (3, 'user3', 'user3', 'user3);
[4.2] スレーブデータベースからユーザーテーブルが同時に作成されているか確認し、作成が成功し、マスターデータベースと同じデータが追加されていれば、主従同期設定は成功です。
【5】、設定上の注意:
binlog_do_db の設定方法は、同期するデータベースが複数ある場合、設定方法は
binlog_do_db=database1
binlog_do_db=database2です
。 binlog_do_db が設定されていない場合、すべてのデータベースは binlog-ignore-db を通じて同期されます。非同期データベースを除外する
show master status: マスター ライブラリのステータスを表示します (クエリ フィールド: ファイルと位置)
Skip-slave-start: スレーブ ライブラリのレプリケーション プロセスは、mysql の起動時に開始されません
(つまり、メイン ライブラリが再起動された後、元のスレーブ ライブラリは元のメイン ライブラリを再コピーします。これにより、同期されたデータが再び同期され、競合が発生します)
【6】、関連コマンド文
mysqlサービスコマンドのインストール
mysqld install mysql2 --defaults-file="D:\mysql\mysql5.6.17_slave\my.ini
データベースサービス削除コマンド
sc delete mysql2 -- 这里的mysql是你要删除的服务名
マスター/スレーブ コマンドを構成します (マスター ライブラリのファイルと位置は、それぞれパラメーター master_log_file と mast_log_pos に対応します)。
change master to master_host='127.0.0.1',master_port=3306,master_user='mytest',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=498;
ライブラリからのコピー機能をオンにする
start slave;
マスタ・スレーブレプリケーション機能の停止
stop slave;
メインライブラリのマスターステータスを表示する
show masterstatus;
ライブラリからスレーブのステータスを表示する
show slave status;