マスター・データベースのMySQLからの同期データ

1.サーバーからメインのインストールMySQLの設定

sudoの apt-getのインストールはmysql- サーバー
#1 のsudo mysql_secure_installation 

のMySQLサーバー配備を確保します。

空白のパスワードを使用してMySQLに接続します。

VALIDATEパスワードPLUGINはパスワードをテストするために使用することができます
し、セキュリティを向上させます。これは、パスワードの強度をチェック
している人のみこれらのパスワードを設定することができますされている
安全な十分。あなたは、セットアップVALIDATEパスワードプラグインにいかが
プレスY | Y についてはい、他のキーのための番号:Nは、
パスワードを設定してくださいため、ここでのルートを(创建密码)。
新しいパスワード:


 - 新しいパスワードを入力します。
デフォルトでは、MySQLのインストールは、匿名ユーザーを持っている
誰もが持ってすることなく、MySQLのにログインできるように
作成したユーザーアカウントのためにそれらを。これが唯一の目的としているため
、テスト、およびするために作るインストールはビットスムーズに行きます。
本番に移行する前に、それらを削除すべきである
環境。

匿名ユーザーを削除しますか|(Y Yキーを押しためはい、他のキーのためのy(是否移除匿名用户):No)には
成功。


通常、ルートからのみ接続を許可しなければならない
localhostの誰かが推測できないことを、この性を保証
ネットワークからのrootのパスワード。

許可しないルートログインをリモート?(プレスY | Y についてはい、他のキーのためにありません):N(是否允许ルート远程登录)
成功。

デフォルトでは、MySQLはという名前のデータベースが付属していますテストという
、誰もがアクセスすることができます。これはまた、唯一の目的としているため、テスト、
および本番に移行する前に除去しなければならない
環境。


それにテスト・データベースとのアクセスを削除しますか(プレスY | Y についてはい、他のキーのためにありません):Y(删除测试库)
  - 落下テストデータベース... 
成功。

 - テスト・データベース上の権限を削除する... 
成功。

特権ですべての変更をすることを確認の意志によって、表リロード
。テイク効果がすぐにあるウィルによって行われたSO FAR 

RELOAD権限になりましテーブル |(?Y-押してy軸についてはい、他のキーのためのY-(すぐにデータベース構成を更新する):なし)
成功。

すべてのDONE!と

#をVI /etc/mysql/mysql.conf.d/mysqld.cnf sudoの
バインドアドレス= 0.0.0.0(IP変更リスナーのIPに指定)

  #sudoのMySQLの-uルート-p

  。MySQLは>ルートに* *上のすべてを与える@「%」を付与オプション付きの「パスワード」;.(* *によって識別されるすべてのデータベースが、あなたはまた、データベースを指定することができることを意味します。ルートは、ユーザーが作成した表し;%手段をすべてのホストができることアクセスは、特定のIPすることができ、ローカルホストはローカルのみのアクセスを許可することを示し、パスワードは、ユーザーのパスワードを作成することです)

  MySQLの>フラッシュ権限;#リフレッシュ許可

  MySQLの>終了

  次に、exitコマンドのMySQLサービスを実行し、次のコマンドを実行してから再起動mysqlの:

  #sudoのsystemctl再起動のMySQL

 

2.マスター・スレーブ構成データベース

   データベース・サーバーの時間からその主な合意を保証することをお勧め必要な場合は、NTPサービスは、スレーブデータベースサーバに自動的に同期マスターデータベースサーバの時間を使用することができます

(1)設定masterデータベース
のログイン、データベース
のMySQL> ONにグラントスレーブ複製* *。Sync_user @ 10.100.0%。で識別される123123 ;(sync_userは、マスターを接続するために、ホストとスレーブ力を与える上でアカウントを確立データベース)
MySQLの>フラッシュ権限;
MySQLの>は読み取りロックを持つテーブルをフラッシュ;#は誰構成データベースを変更することを防止するためのライブラリをロックしてから、マスター・データベース
MySQLの>終了。
設定MySQLの
#sudoのviの/etc/mysql/mysql.conf.d/mysqld.cnf
  
  
  server- id =1                        # 数据库唯一ID,主从的标识号绝对不能重复。
  log-bin=/var/log/mysql/mysql-bin.log      # 开启bin-log,并指定文件目录和文件名前缀
  binlog- do -db= xxx                 # 需要同步xxx数据库。如果是多个同步库,就以此格式另写几行即可。如果不指明对某个具体库同步,就去掉此行,表示同步所有库(除了ignore忽略的库)。
  binlog-ignore-db=mysql             # 不同步mysql系统数据库。如果是多个不同步库,就以此格式另写几行;也可以在一行,中间逗号隔开。   replicate-do-db和replicate-ignore-db为互斥选项,只需要一个即可
  sync_binlog = 1                   # 确保binlog日志写入后与硬盘同步
  binlog_checksum = none            # 跳过现有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none
  binlog_format = mixed             # bin-log日志文件格式,设置为MIXED可以防止主键重复。
 

  •   温馨提示:在主服务器上最重要的二进制日志设置是sync_binlog,这使得mysql在每次提交事务的时候把二进制日志的内容同步到磁盘上,即使服务器崩溃也会把事件写入日志中。
    sync_binlog 这个参数是对于MySQL系统来说是至关重要的,他不仅影响到Binlog对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性。对于 "sync_binlog" 参数的各种设置的说明如下:
    sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。
    sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。
  •  MySQLでは、デフォルトの設定であることを、sync_binlog = 0である、任意の必須のディスクリフレッシュコマンドなしで、この時間は、パフォーマンスは最高ですが、リスクが最大です。システムクラッシュ後、すべてのbinlogの情報がbinlog_cacheに失われますので。ときに「1」に設定すると、パフォーマンスの損失は最も安全な最大設定です。システムクラッシュは、また、実際のデータに実質的な影響を与えることなく、未完成binlog_cacheトランザクションまで失われた場合でも、1に設定したときからです。
  • 同時トランザクションのシステムが高いため、「sync_binlog」は0に設定し、1に設定されている、システム書き込み性能ギャップは5倍以上と高いようなものであってもよいです


データベースサービスの再起動
#をsystemctl再起動mysql.service

G \ MySQLの>ショーマスターステータス
  
  • メインサーバMySQLを動作しないようにこのステップを実行した後、プライマリサーバの状態値変更条件が発生防ぐため
バックアップマスタ
#須藤mysqldumpを-uroot -p -A --events> backup.sql
コピーしたスレーブデータベース待機に導入
#須藤SCP backup.sqlルート#10.100.0.147: / TMP /
(2)構成データベーススレーブ
#sudoのviの/etc/mysql/mysql.conf.d/mysqld.cnf
少なくともサーバID = XX(XXは固有の値である)を変更する必要性

温馨提示:
slave-skip-errors = all     
# 跳过所有的错误,继续执行复制操作
replicate-do-db=liting     # 需要同步的数据库名。如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)
replicate-ignore-db=mysql   # 不同步test数据库
  当只针对某些库的某张表进行同步时,如下,只同步liting库的haha表和test库的heihei表:
  replicate- do -db = liting
  replicate-wild- do -table = liting.haha        // 当只同步几个或少数表时,可以这样设置。注意这要跟上面的库指定配合使用;
  replicate- do -db = test
  replicate-wild- do -table = test.heihei       // 如果同步的库的表比较多时,就不能这样一一指定了,就把这个选项配置去掉,直接根据指定的库进行同步。


データベース・サービスの再起動
#をsudoのsystemctl再起動mysql.service
導入masterデータベースのバックアップ
#sudoのmysqlの</tmp/backup.sql

配置されたDBのマスター
のMySQL> STOPスレーブ;
MySQLの>「= '10 MASTER_HOST .100.0.249に変更マスター、MASTER_PORT = 3306、MASTER_USER 、master_password = '123123'、MASTER_LOG_FILE = 'MySQLの-bin.000001' = 'とsync_user'、MASTER_LOG_POS = 154;
MySQLの>スレーブスタート;
MySQLの>表示スレーブステータス\ G
  
  • Slave_IO_RunningとSlave_SQL_Runningは、はい、それは同期が成功したことを意味しています
(3)着陸マスタデータベース、テーブルロック解除
のMySQL>ロック解除テーブルと、

 3.テストと同期効果

ログmasterデータベース:
データベースの作成テスト; 
MySQLの > 表の人々を作成します(
     - > user_idはint型符号なしAUTO_INCREMENT、
     - > USER_NAME VARCHAR(25 )NOT NULL、
     - >年齢int型 - > 主キー(USER_ID)
     - >); 
MySQLの> INSERT人(USER_NAME、年齢)の値に (「ジョン」、20);

データベースから着地検査データを同期させるかどうか:
  

  

  データが正しく同期、書き込まれています。

 


  メイン同期失敗で発生する同期のプロセスで文を与えられている場合は、次の文は、成功を同期することはできません例えば、ライブラリーから、マスタ・データ・ライブラリがあり、これは、更新操作を実行するためのメインライブラリに、データベースからそのようなデータを、このようにエラーが発生していない、しかし、データはありません。synchronized文の背中を進めることができませんので、この時点で、データベースの同期からのデータは、失敗しました。

  # 在从数据库中,使用SET全局sql_slave_skip_counter来跳过事件,跳过这一个错误,然后执行从下一个事件组开始

  mysql> stop slave;

  mysql> set global sql_slave_skip_counter=1;

  MySQLの>スレーブを起動します。

 

おすすめ

転載: www.cnblogs.com/alamisu/p/11840749.html
おすすめ