1.はじめに
以下からのショットを呼び出す前に、MySQLデータベースには、服用を中止し、プライマリサーバの場合に行っています。しかし、最近のプロジェクトは、数日間にオンラインであったが、また、単一のデータベース・サーバは、マスタ・スレーブ・アーキテクチャ、シンプルなマスタースレーブアーキテクチャを行うには、MySQLサーバーを与えることを決定する前に数日を実行します。
最高のプロジェクトは、建物からのノンストップ・サービスMySQLの本体ケースで完了することができます。後でいくつかの情報をめくっそして、あなたは本当にメソッドからのショットを追加したり、再呼び出しオンラインで見つけることができます。
実際には、我々が主な目的からのショットを服用を中止するために使用さMASTER_LOG_FILEとMASTER_LOG_POS 2つのパラメータを見つけようとし、テーブルをロックすることです。ノンストップサービスの場合にはこれらの2つのパラメータの方法は、建築特徴からメインラインを確立し、決定することができる場合、それを達成することができます。
2.サーバー環境とバージョン
系统: CentOS7.5
Mysql: 5.6.x
主端: 172.188.26.221
从端: 172.188.26.229
3.前提条件
注意:エンドストップサービスの主な前提は、それが開かれたことであるビン・ログログ!!
あなたはビンログメイン図書館でログインをオンにしていない場合は、新しいが構築後の方法はありません、コンフィギュレーションビン・ログログので、メインのライブラリを有効にするには再起動する必要があります。しかし、もし状況が、それはメインから行われることを証明する前に、重いショットライブラリですが、マスタースレーブが失敗やり直す必要があるかもしれません。この場合は、あなたはライブラリから再構築することができ、再度、データベースのバックアップ限り、メインのライブラリを再起動する必要はありません。
さんが新しいから特定の主要プロセスについてお話していきましょう。
一般的に最後の段落のIPで使用される主要エンドの準備終わり、のいずれかとしてマスターライブラリ内のmy.cnf設定ファイルを変更し、行によってオープンビン・ログログ形式を追加し、そのサーバーIDをメモして、その値。
server-id=221
log-bin=/data/mysqldata/mysql-bin
binlog-format=ROW
以前ビン・ログ機能を開いた場合、それは変更されていません。
一次ライブラリーにバックアップユーザー認証操作が続きます。
mysql>grant replication slave on *.* to 'repel'@'172.188.26.229' identified by 'password';
ライブラリへのIPアドレスからの承認は、撃退バックアップのユーザー名は、「反発」を使用することはお勧めしません@「%」をこのように動作することを許可、主にセキュリティ上の問題、IP制限ホワイトリストの承認に。
次のステップでは、データベース内のメインライブラリがバックアップされます導くことです。
- mysqldumpを途中で、次は、データベース全体をエクスポートすることです。
mysqldump -uroot -p --single-transaction --no-autocommit --master-data=2 -A >test2.sql
-
mysqldumpを途中で、そこのマスターのMySQLのビジネスプロジェクトライブラリよりもですが、一つだけのサービスのデータベースをエクスポートする場合は、仮説飛天データベースと呼ばれます:
mysqldump -uroot -p --single-transaction --no-autocommit --master-data=2 feitian > feitian_dump.sql
「--master-データ= 2」重要なパラメータがあり、このパラメータは、私たちはオンラインデータベースからマスターを再構築することができます。
データベースをエクスポートした後、それは誰もがリラックスし、渡す方法、サーバーライブラリから広がっていきます。私はscpコマンドを使用します。
scp feitian_dump.sql [email protected]:/usr/local/src/
次のステップは、ライブラリから設定を行うことです。
ライブラリーからの最高は、完全に「クリーン」な状態である、または再インストールしてください。同様のMysql、Nginxは、PHPこれらの従来の操作、パッケージをインストールする準備ができて平時に書かれた最高のスクリプト、彼らの共通プロファイルをインストールします。あなたが使用したい場合は、直接インストールスクリプトについて実行します。
私は、スクリプト、この操作を行うにはansible脚本を使用するために使用されます。
私は書いていないオペレーティングMySQLを再インストールするか、私は自分のスクリプトを共有する別の記事を書きます。
MySQLのリロードが完了すると、データベースの初期化は、rootのパスワードを変更するには、行うには、これらは日常の動作です。
新しいMySQLがインストールされ、正常に起動したら、ライブラリから関数を設定することができます。
私は飛天ビジネスライブラリをバックアップするため、ライブラリのmy.cnfから変更し、これだけ追加します。
server-id=229
replicate_wild_do_table=feitian.%
- フルバックアップが実行されている場合、実際には、コンフィギュレーションサーバ-idとメイン図書館限り、他を大きくする必要がなく、その上に同じではありません。
- あなたには、いくつかの特定のサービスのデータベースをバックアップしたい場合は、この値をreplicate_wild_do_table使用する必要があります。その役割はに追加していくために、カンマで区切られた複数のライブラリが存在する場合にのみ、特定のライブラリをバックアップする必要があるライブラリから伝えることです。
- 使用しないように最善であるとは逆replicate_wild_ignore_table関数のパラメータもあり、より多くの制限を使用するように構成データベース、バックアップされていないデータベースは、このパラメータを無視することですが慣れていません。
次はデータベースをインポートする前に、データベースにある、あなたはライブラリのbinlogから、それをリセットする必要があります。
mysql -uroot -p -e 'reset master'
mysql -uroot -p feitian < feitian_dump.sql
マスタースレーブの同期を設定するには、以下の強調表示します。
= 2 --master-データやるのはなぜ重要なパラメータをキー・パラメータを使用して、データベースのバックアップ時に、前述しましたか?バックアップファイルなので、あなたは私たちが必要とするMASTER_LOG_FILEとMASTER_LOG_POS 2つのパラメータを見ることができます。これら2つのパラメータで、我々は見て、過去のようにロックテーブルを服用を中止する必要はありませんでした。
具体的にどのようにこれらの2つのパラメータを見つけるには?おそらく彼らは、ファイルの最初の30行の中に、それは頭のコマンドで確認できます。
[root@ND-BACKUP mysql]# head -n 30 feitian_dump.sql
-- MySQL dump 10.13 Distrib 5.6.39, for linux-glibc2.12 (x86_64)
--
-- Host: localhost Database: feitian
-- ------------------------------------------------------
-- Server version 5.6.39-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Position to start replication or point-in-time recovery from
--
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000063', MASTER_LOG_POS=144333309;
--
-- Table structure for table `ft_access`
--
上記の出力では、あなたがバイナリログでmysql-bin.000063を見ることができ、位置を使用すると、ライブラリから同期を設定することができ、これら2つのパラメータで144333309.です。
一般的に、ライブラリの変更マスタからそれまで。
だから、ライブラリから次の設定を行います。
# 先重置一下 slave
mysql>reset slave all;
#然后再执行操作 mysql>change master to master_host='172.188.26.221', master_user='repel', master_password='*****', master_port=3306,master_log_file='mysql-bin.000063', master_log_pos=144333309;
その後、あなたはライブラリからコピーを開始することができます。
mysql>start slave;
ライブラリからステータスをチェックするには:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.188.26.221
Master_User: repel
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000063
Read_Master_Log_Pos: 146576160
Relay_Log_File: nd-feitian-relay-bin.000002
Relay_Log_Pos: 2243134
Relay_Master_Log_File: mysql-bin.000063
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Wild_Do_Table: feitian.%
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 146576160
Relay_Log_Space: 2243311
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 221
Master_UUID: a986c930-214a-11e8-b69c-00163e0cee42
Master_Info_File: /usr/local/mysql/mysqldata/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Auto_Position: 0
- はいとSlave_SQL_Running:基本的にはい、はい2つのマスタ・スレーブ同期問題はないSlave_IO_Runningを参照してください。
-
することにより、同一のコンテンツ、マスタ・スレーブ同期するかどうかを確認するには:
- MASTER_LOG_FILEます。mysql-bin.000063とのRelay_Master_Log_Fileます。mysql-bin.000063マスタースレーブの同期は、同じバイナリログログを持っています。
- 上記の2つのパラメータは同じですが、またRead_Master_Log_PosとExec_Master_Log_Pos 2つのパラメータを比較する必要がある場合。何の違い、マスター・スレーブの同期が優れている場合は違いはありませんを参照してください。
メインライブラリーでは、あなたはまた、マスター・スレーブの同期の状態を見ることができます:
msyql> show processlist;