背景
機能の分離を達成するために読み書きする春AOPのデータベースによる最近の調査。
コードを書く前に、まず原因の読み取りと書き込みの分離に、MySQLの環境にデプロイされ、少なくとも2 MySQLインスタンス、マスター・スレーブを展開するために必要とされ、そしてマスターは自動的に私の母国ので、インスタンス間で同期させることができ私たちは例の窓に直接メインのMySQLを構築しようとするので、メモリは(仮想マシンを開くにはしたくない)、高くありませんが、このプロセスは最終的に解決しても、いくつかのトラブルがあったが、また多くの時間を費やしてきました。私は環境を記録するように設定するプロセスについては、このブログを書いているので、同じことで、後の時間を無駄にするだけでなく、読者の便宜を回避するには、同じシーンを再現することができました。
環境説明
ローカルアドレス:127.0.0.1(ローカルホスト)
MySQLのバージョン:mysqlの-5.7.28-winx64
主な図書館サービス名:マスター、ポート3307
スレーブ、ポート3308:図書館サービス名から
メインライブラリのマスターをインストールして設定します
ダウンロード
まず、ダウンロードMySQLは、直接にするために公式サイトのインストールパッケージのジップバージョンをダウンロードし、そのような著者のバージョンと新しいバージョンをダウンロードするためにここで提案、神のはるかに大きいオンラインの提案である、5.7であります
解凍したファイルとのmy.iniを作成
my.iniファイルと呼ばれる空のテキストを作成し、フォルダに、マスター用のフォルダを名前のインストールパッケージを抽出し、
次のようにテキストの内容は次のとおりです。
[client]
# 端口号,默认是3306,同一个环境下不同的mysql实例端口号不能相同
port=3307
default-character-set=utf8
[mysqld]
#主库配置
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index
# 设置为自己MYSQL的安装目录
basedir=D:/software/mysql/master
# 设置为MYSQL的数据目录,data文件夹由mysql自动生成
datadir=D:/software/mysql/master/data
port=3307
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
# 开启查询缓存
explicit_defaults_for_timestamp=true
PS:設定ディレクトリ内のアドレスの内容ではないバックスラッシュで、スラッシュを使用するため、それ以外の場合は劣るインストールサービスはエラーになりますが、ディレクトリを見つけることができません。
マスター・図書館サービスをインストールします。
1、CMD 管理者マスターのbinディレクトリに実行するために、
2、初期化コマンド:
mysqld --initialize --user=mysql --console
ディスプレイに表示され、次のようなあなたは、初期化が成功した強化するならば、成功は、システムが自動的にデータフォルダを生成し、初期パスワードを生成し、初期化します
3、初期化が完了した後、インストールサービスのコマンド:
mysqld --install master --defaults-file="D:\software\mysql\master\my.ini"
サービスの名前のためのマスター - 「サービスが正常にインストールされ、」デフォルト・ファイルは、iniファイルへのパスがあり、成功があるでしょう
注:インストールに失敗した場合は、管理者CMDとして実行しない場合は、参照してください。
通常は、マスター・サービスをインストールした後、我々はMySQLを起動することができ、しかし、ここで私たちは、より少ない情報マスタサービスレジストリ内という場所を設定する必要があるため、mysqlは文句を言うでしょう直接の後、あること、ピットです。
だから、無修正レジストリの前に、startコマンドを実行しないことをお勧めします。
4、レジストリを変更
押して勝利+ R、ボックスシェルレジストリregeditと入力を開くには、マスター・サービスが見つかり、パスはHKEY_LOCAL_MACHINE->システム- > CurrentControlSet->サービス- >マスターは、変更のImagePathがあります
D:\software\mysql\master\bin\mysqld --defaults-file=D:\software\mysql\master\my.ini master
マスター・データベースフォルダの独自のインストールに対応するパス。
5、サービスを開始
それでもbinディレクトリにサービスを開始され、コマンドはnet master start
、成功した開始後、次のプロンプトが表示されます。
6、MySQLを入力します。
mysqlコマンドを入力します:mysqlの-uルート-pが、私たちは、ポート番号を変更したため、コマンドを変更しなければならない-P3307 -p mysqlの-uルートを、そしてあなただけのmysqlを入力する初期設定を生成したパスワードを入力し、
この初期パスワードがあまりにも退屈しているので、私たちは次のように声明を変更、より良い変更のパスワードを持っていました:
set password=password('新密码');
このような、123456に設定されたパスワードLZなど
この成功は、rootのパスワードを設定し、我々は、データベース接続を操作するなどのNavicatなどのグラフィカル・ツールを使用することができ、
ライブラリスレーブからのインストール
インストール手順とメイン図書館から図書館、my.iniファイルに対応する構成のみが変更されました。
[client]
port=3308
default-character-set=utf8
[mysqld]
#从库配置
server_id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
# 设置为自己MYSQL的安装目录
basedir=D:/software/mysql/slave
# 设置为MYSQL的数据目录
datadir=D:/software/mysql/slave/data
port=3308
character_set_server=utf8
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
#开启查询缓存
explicit_defaults_for_timestamp=true
ライブラリからマスターリンク
私たちは、マスタとスレーブ間のレプリケーションを実現するために、マスタとスレーブ間のライブラリの関連を操作することができますので、両方のライブラリは、インストールされています、
主なライブラリは、入力してログインします show master status;
ログファイルであるバイナリファイルを生成し、それは同期と図書館協会からの主なライブラリを達成することができ、メインライブラリで見つけることができます。
ライブラリーからのログは、次のコマンドを実行し、
change master to master_host='127.0.0.1',master_port=3307,master_user='root',master_password='123456',master_log_file='master-bin.000001',master_log_pos=0;
成功した後に実行メインライブラリのすべての構成情報が、上記を参照することは困難ではないstart slave
オープンマスタースレーブのレプリケーション
次の完了後、我々は単にマスターライブラリ名でデータベースをテストと呼ばれる作成、検証、
次に、スレーブデータベースは、同じテストを生成します、
このように、実装を成功にマスタースレーブのレプリケーション。
書き込みへのライブラリーからのデータは、その後、メインライブラリが同期されていない場合は、両方のライブラリだけで、一方向の関連付けを行うので、注目に値するです。それだけでライブラリからデータを読み取るために使用することができ、メインライブラリが書き込みでなく、読むためだけではなく、もちろん、ほとんどの場合は、書き込みデータに使用され、データが効果的にメインライブラリを低減することができる、ライブラリから一般に入手可能である読みます私たちは、多くの場合、別々の読み取りと書き込みと言う、ある圧力、。