Mysqlシングルマシンマルチインスタンスおよびプライマリ・セカンダリ・バックアップ設定

5253 ワード

Slaveデータベースの準備
  • 新しいディレクトリ、例えばmysql 3307、Slaveデータベースのディレクトリとします.
  • Master Mysqlディレクトリの下のshareディレクトリをmysql 3307にコピーします.
  • mysql 3307ディレクトリの下にdataディレクトリを作成し、Master Mysqlのdataの下にあるmysqlフォルダとtestフォルダをmysql 3307dataの下にコピーします.
  • Master Mysqlディレクトリの下のmyをコピーします.iniからmysql 3307まで.

  • マスターライブラリのmyを変更します.ini
    Master Mysqlディレクトリの下のmyを変更します.iniファイル.
    [mysqld]を見つけて、次の内容を追加します.
    log-bin=mysql-bin
    server-id=1
    #binlog-do-db=test
    #binlog-ignore-db=mysql

    バックアップアカウントの作成
    Masterライブラリに同期権限を持つユーザー:backup、パスワード:backupを作成します.
    mysql>grant replication slave on *.* to backup@'localhost' identified by 'backup';
    mysql>flush privileges;

    Slaveライブラリのmyを変更します.ini
    mysql 3307ディレクトリの下のmyを変更します.iniファイル.
  • [client]でport=3306が見つかり、port=3307
  • に変更されました.
  • [mysqld]でport=3306を見つけ、port=3307
  • に変更
  • 追加内容:
  • log-bin=mysql-bin
    #server-id     Master mysql/my.ini  id 
    server-id=10
    #mysql     
    master-user=backup
    #mysql    
    master-pass=backup
    #mysql    
    master-port=3306
    master-connect-retry=60
    #       
    replicate-do-db=test

    Slaveをサービスに設定
    コマンドラインの下で実行:
    mysqld -install mysql3307 --defaults-file="f:\mysql3307\my.ini"

    注意:パラメータが間違っている場合は、プロンプトは表示されませんが、サービスの開始時には1607エラーが表示されます.
    構成に成功すると、windowのサービスに対応するサービスが表示されます.サービス名はmysql 3307です.
    PS 1. Mysqlサービスの削除:mysqld-remove mysql 3307.2.Mysqlサービスの起動:net start mysql 3307.Mysqlサービスの停止:net stop mysql 3307
    Masterデータベースのステータスの問合せ
    ここではFileとPositionの値を記録する必要があります.
    mysql>show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 |       98 |              |                  |
    +------------------+----------+--------------+------------------+

    Slaveデータベースの設定
    Slaveデータベースの起動とログイン
    net start mysql3307
    mysql -uroot -p -P3307

    mysqlコマンドのパラメータ:-P 3307は3307ポートを指し、-Pは大文字でなければなりません.
    Slaveパスワードを入力し(コピーしたMasterデータベースなので、パスワードはMasterデータベースと同じ)、データベースにログインします.
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | test               |
    +--------------------+

    mysqlとtestが表示され、mysql 3307データベースインスタンスに記載されていることを示します.
    実行を続行:
    mysql>slave stop;
    mysql>change master to
    ->master_host='127.0.0.1',
    ->master_user='backup',
    ->master_password='backup',
    ->master_log_file='mysql-bin.000001',
    ->master_log_pos=98;

    注意:1.master_log_posの値には引用符を付けないでください.2. master_hostは必ずIPアドレスを書きます.
    実行を続行:
    mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;  
    mysql>slave start;
    mysql>show slave status \G;

    set GLOBAL SQL_SLAVE_SKIP_COUNTER=1とは、Slaveコピーエラー時にエラーがスキップされることを意味します.
    クエリーの結果が次のように表示された場合は、構成が成功したことを示します.
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    Replicate_Do_DB: test

    プライマリ・スレーブ・データベースのテスト
    Masterデータベースtestでテーブルを作成し、レコードを追加し、Slaveデータベースで追加したレコードをクエリーできます.