Mysqlマスター構成【5.5以上】


Mysql(Mariadb)5.5以降の構成データベースの主従は5.1と異なる
メインライブラリ:192.168.30.101
ライブラリ:192.168.30.102
1、メインライブラリの構成
    vim/etc/my.conf(自分のデータベースプロファイルを編集すればいい)は[mysqld]で次のパラメータを設定します.
server-id=101 #        IP     
log_bin=mysql-bin #  mysql     (                         )
binlog-do-db=my_user #                       
binlog-ignore-db=mysql #      

終了の保存、サービスの再起動、ホストバイナリ・ログのステータスの表示
service mariadb restart  #            mariadb       
mysql -u root -p
show master status; #        
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |    3129  | osyunweidb   | mysql            |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

サーバーからアカウントを開設するには、ユーザー名slave_dbはipを限定し、レプリケーション権限のみ付与
#       db_name.*                      
grant replication slave on *.* to 'slave_db'@'192.168.30.102' identified by '123456' with grant option;
flush privileges;

2、スレーブ構成
    vim/etc/my.conf(自分のデータベースプロファイルを編集すればいい)は[mysqld]で次のパラメータを設定します.
vi /etc/my.cnf
server-id=102 #     
log-bin=mysql-bin
replicate-do-db=my_user
replicate-ignore-db=mysql

終了の保存、サービスの再起動
service mariadb restart  #            mariadb       
mysql -u root -p
slave stop; #       
change master to master_host='192.168.30.101',master_user='slave_db',master_password='123456',master_log_file='mysql-bin.000001' ,master_log_pos=3129;#                           
slave start; #       
show slave status \G #      

通常の構成では、ライブラリからマスターライブラリのバイナリログの読み込みによる同期が開始されます
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

  Slave_IO_Runningとは、マスター・ライブラリのバイナリ・ログを読み込むプロセスの状態Slave_SQL_Runningとは、ライブラリからバイナリ・ログが実行された状態のことです
どちらもyesであれば,ライブラリからマスターライブラリのバイナリ操作ログを読み出し,ネイティブで同期して実行することで,マスターコピーの機能が自然に実現されることを示す.
3、データの移行または同期
スレーブライブラリはメインライブラリのbin-logを読み込むことで同期を実現するので、メインライブラリがbin-logに記録されているデータ操作を自動的に同期するしかなく、メインライブラリがbin-logを開くまでのデータは手動でインポートするしかありません
たとえば、プライマリ・ライブラリがbin-logをオンにし、データベースからテーブルを作成してデータ・ライトを作成する場合は、次の操作でホット・同期を実行できます.
flush table with read lock; #                               
#....      ....
unlock tables; #    

プライマリ・ライブラリのロックは、その後、ライブラリから次のコマンドを実行します(プライマリ・スレーブの構成を忘れないでください).
slave start; #    ,          bin-log                  

これにより、データの整合性が保証され、同期時にマスターライブラリが書き換えられ、データの不完全性が防止される
しばらくメインライブラリを実行してからbin-logがオンになった場合、ライブラリから同期するには手動でインポートする前のデータが必要で、停止できない場合はバイナリを開くしかなく、メインライブラリに入り、リードロックを加え、データをローカルにエクスポートし、ライブラリからインポートし、ライブラリからslaveを開き、メインライブラリからロックを開く
4、よくある質問
    1) Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
グローバル権限は特定のデータベースでは使用できません.この問題のほとんどは、ライブラリからのアクセスユーザー名パスワードを設定するときに使用されます.
        grant replication slave on *.* to 'slave_db'@'192.168.30.102' with grant option
ここでは、replication slaveはグローバル権限であるため、データベースmyをコピーすることはできません.cnfには限定されています