mysqlの主従配置
MySQLの主従配置
MySQL ReplicationはまたABコピーまたは主従コピーともいう.これは主にMySQLの定期バックアップまたは読み書き分離のために使われています.2台のmysqlサーバーを配置したり、1台のサーバーに2つのポートを配置したりできます.この文章は第2の方法を使います.
一、まず最初のmysqlサーバーを配置して、配置方法は参考できます.
http://daixuan.blog.51cto.com/5426657/1717409
二番目のmysqlをインストールします.
1、設定ファイルをコピーして修正する
[root@daixuanlocal[Ücp-r mysql mysql]slaave
[root@daixuanlocal[Ücd mysql]slaave
[root@daixuanmysql_slave.⑵mkdir/data/mysqlslaave
[root@daixuanmysql_slave:璝chown-R mysql:mysql/data/mysql_slaave
[root@daixuanmysql_slave.⑵mysql.cp/etc/my.cnf .
[root@daixuanmysql_slave:芫vimmy.cnf/注意、ここで修正したのはMySQL serverで、clientではありません.
ヽoo.ツMySQL server
[mysqld]
ポーター = 3307 //ポートの変更
socket =/tmp/mysql_slaave.sock
datadir =/data/mysqlslaave //datadirディレクトリを追加
[root@daixuanmysql_slave]璖pwd
//usr/local/mysql_slaave
[root@daixuanmysql_slave./scripts/mysqlinstall_db--user=mysql--datadir=/mysqlslaave
[root@daixuanmysql_slave.⑵mysqlslaave/ //データベースを初期化したら二つのディレクトリがあります.
mysql test
2、SLaveの設定
[root@daixuanmysql_slave]29536;cd/etc/init.d
[[email protected]]舸cp mysqld mysqld_slaave
[[email protected].⑵莑vim
vim mysqldslaave
変更:
basedir=/usr/local/mysql_slaave
datadir=/data/mysql_slaave
conf=$basedir/my.cnf
ファイルの中の他のconf=/etc/my.cnfをconf=$basedir/my.cnfに修正します.
皱Try to find basedir in/etc/my.cnf
conf=/etc/my.cnf
に変更
皱Try to find basedir in/etc/my.cnf
conf=$basedir/my.cnf
3、slaaveを起動する
方法1:
[[email protected]]苊/etc/init.d/mysqld_slaave start //mysqlを起動しますslaave
Starting MySQL.SUCCESS!
方法二:
[root@daixuanmysql_slave.〹cd bin
[root@daixuanbin;落//mysqld_safe--defaults-file=./my.cnf--user=mysql&
今後起動したいなら、それを/etc/rc.d/rc.localファイルに追加します.
[root@daixuanbin;脼echo"./mysqldld_safe--defaults-file=./my.cnf--user=mysql=>/etc/c/c/c/c/c/c/c/c.local
[root@daixuanbin;萼netstat-lnp grep mysqld
tcp 0 0 0.0.0:3306 0.0.00:* LISTER 9659/mysqld
tcp 0 0 0.0.0:3307 0.0.00:* LISTER 10436/mysqld
三、配置Replication
同じサーバーに登録した二つの異なるmysqlは、まずmasterにライブラリdb 1を作成します.
[[email protected]]菷ls/tmp/
mysqlslaave.sock mysql.sock
mysql.sockを使って登録したのはマスターで、mysql_slaave.sockに登録したのはslaaveです.
[root@daixuanmysql_slave-攂mysql-uroot-S/tmp/mysql.sockまたはコマンドを使用します.
[root@daixuan~」33451;mysql-h 127.1.0.1-P 306
mysql>create database db 1;
mysql>use db 1
mysql;showテーブル;
Empty set(0.00 sec)
mysqlライブラリのデータをコピーしてください.
[root@daixuan~」Ümysqldump-S/tmp/mysql.sock mysql>123.sql
[root@daixuan~」(Ümysql-uroot-S/tmp/mysql.sock db 1<123.sql
[root@daixuan~」(Ümysql-uroot-S/tmp/mysql.sock
mysql;showテーブル;
+-------------------+
ヽoo.ツ同前db 1 |
+-------------------+
124 columnsprv |
124 db |
ヽoo.ツ |
1.マスターの設定
設定ファイルを変更:
設定ファイルを修正したら、mysqldサービスを再起動しなければなりません.
[root@daixuan~」(璜/etc/init.d/mysqld retart
Shutting down MySQL.SUCCESS!
Starting MySQL.SUCCESS!
[root@daixuan~」(荎ls/data/mysql //daixuanの先頭にあるbin_を見ることができます.ロゴ
daixual.00001 daixual.index db 1
mysqlで伝送するbin_を設定します.ロゴのユーザは、rpelにreplicationの権限を与えます.
mysql> grant replication slaave オン *.* ト 'repl'@'127.1.0.1' identifed by '123123' //ここのreplはslaave端末のために設定されているmaster端末のmysqlデータにアクセスするユーザで、パスワードは123123で、ここの127.1.0.1はslaaveのipです.
mysql>flaush prvieges;パーミッションを更新
slaaveのプロファイルを先に修正します.my.cnf:
[root@daixuan~」(Ümysql-S/tmp/mysql_slaave.sock-e「create database db 1」//データベースを作成するdb 1
[root@daixuan~」(Ümysql-S/tmp/mysql_slaave.sock db 1<123.sql //バックアップデータ123.sqlからdb 1への導入
マスター上で以下のコマンドを実行します.
[root@daixuan~」(Ümysql-uroot-S/tmp/mysql.sock
mysql;unlock tables;
mysql;show databases;
+----------++
|Database |
+----------++
|information_schema 124
|db1 |
|mysql |
チーム |
+----------++
4ローソンinセット(0.01 sec)
mysql>drop database db 1;
Query OK、22 rows affected(0.02 sec)
mysql;show databases;
+----------++
|Database |
+----------++
|information_schema 124 //ここでdb 1データベースは削除されました.
|mysql |
チーム |
+----------++
3ローws in set(0.00 sec)
参考:http://www.apelearn.com/study_v 2/chapter 25.0.
MySQL ReplicationはまたABコピーまたは主従コピーともいう.これは主にMySQLの定期バックアップまたは読み書き分離のために使われています.2台のmysqlサーバーを配置したり、1台のサーバーに2つのポートを配置したりできます.この文章は第2の方法を使います.
一、まず最初のmysqlサーバーを配置して、配置方法は参考できます.
http://daixuan.blog.51cto.com/5426657/1717409
二番目のmysqlをインストールします.
1、設定ファイルをコピーして修正する
[root@daixuanlocal[Ücp-r mysql mysql]slaave
[root@daixuanlocal[Ücd mysql]slaave
[root@daixuanmysql_slave.⑵mkdir/data/mysqlslaave
[root@daixuanmysql_slave:璝chown-R mysql:mysql/data/mysql_slaave
[root@daixuanmysql_slave.⑵mysql.cp/etc/my.cnf .
[root@daixuanmysql_slave:芫vimmy.cnf/注意、ここで修正したのはMySQL serverで、clientではありません.
ヽoo.ツMySQL server
[mysqld]
ポーター = 3307 //ポートの変更
socket =/tmp/mysql_slaave.sock
datadir =/data/mysqlslaave //datadirディレクトリを追加
[root@daixuanmysql_slave]璖pwd
//usr/local/mysql_slaave
[root@daixuanmysql_slave./scripts/mysqlinstall_db--user=mysql--datadir=/mysqlslaave
[root@daixuanmysql_slave.⑵mysqlslaave/ //データベースを初期化したら二つのディレクトリがあります.
mysql test
2、SLaveの設定
[root@daixuanmysql_slave]29536;cd/etc/init.d
[[email protected]]舸cp mysqld mysqld_slaave
[[email protected].⑵莑vim
vim mysqldslaave
変更:
basedir=/usr/local/mysql_slaave
datadir=/data/mysql_slaave
conf=$basedir/my.cnf
ファイルの中の他のconf=/etc/my.cnfをconf=$basedir/my.cnfに修正します.
皱Try to find basedir in/etc/my.cnf
conf=/etc/my.cnf
に変更
皱Try to find basedir in/etc/my.cnf
conf=$basedir/my.cnf
3、slaaveを起動する
方法1:
[[email protected]]苊/etc/init.d/mysqld_slaave start //mysqlを起動しますslaave
Starting MySQL.SUCCESS!
方法二:
[root@daixuanmysql_slave.〹cd bin
[root@daixuanbin;落//mysqld_safe--defaults-file=./my.cnf--user=mysql&
今後起動したいなら、それを/etc/rc.d/rc.localファイルに追加します.
[root@daixuanbin;脼echo"./mysqldld_safe--defaults-file=./my.cnf--user=mysql=>/etc/c/c/c/c/c/c/c/c.local
[root@daixuanbin;萼netstat-lnp grep mysqld
tcp 0 0 0.0.0:3306 0.0.00:* LISTER 9659/mysqld
tcp 0 0 0.0.0:3307 0.0.00:* LISTER 10436/mysqld
三、配置Replication
同じサーバーに登録した二つの異なるmysqlは、まずmasterにライブラリdb 1を作成します.
[[email protected]]菷ls/tmp/
mysqlslaave.sock mysql.sock
mysql.sockを使って登録したのはマスターで、mysql_slaave.sockに登録したのはslaaveです.
[root@daixuanmysql_slave-攂mysql-uroot-S/tmp/mysql.sockまたはコマンドを使用します.
[root@daixuan~」33451;mysql-h 127.1.0.1-P 306
mysql>create database db 1;
mysql>use db 1
mysql;showテーブル;
Empty set(0.00 sec)
mysqlライブラリのデータをコピーしてください.
[root@daixuan~」Ümysqldump-S/tmp/mysql.sock mysql>123.sql
[root@daixuan~」(Ümysql-uroot-S/tmp/mysql.sock db 1<123.sql
[root@daixuan~」(Ümysql-uroot-S/tmp/mysql.sock
mysql;showテーブル;
+-------------------+
ヽoo.ツ同前db 1 |
+-------------------+
124 columnsprv |
124 db |
ヽoo.ツ |
1.マスターの設定
設定ファイルを変更:
[root@daixuan mysql]# vim /etc/my.cnf
「mysqld」の部分で以下の内容があるかどうかを調べます.ない場合は追加します.server-id=1
log-bin=daixuan
この2行が必須である以外に、2つのパラメータがあります.選択的に使用できます.binlog-do-db=db1,db2 // , db1 db2
binlog-ignore-db=db1,db2 // , db1 db2,
binlogn-do-db=コピーが必要なデータベース名、複数のデータベース名、コンマ区切りを使用します.binlog-ingnore-db=コピー不要なデータベース名、複数のデータベース名、カンマ区切りを使用します.この二つのパラメータは実は一つだけです.設定ファイルを修正したら、mysqldサービスを再起動しなければなりません.
[root@daixuan~」(璜/etc/init.d/mysqld retart
Shutting down MySQL.SUCCESS!
Starting MySQL.SUCCESS!
[root@daixuan~」(荎ls/data/mysql //daixuanの先頭にあるbin_を見ることができます.ロゴ
daixual.00001 daixual.index db 1
mysqlで伝送するbin_を設定します.ロゴのユーザは、rpelにreplicationの権限を与えます.
mysql> grant replication slaave オン *.* ト 'repl'@'127.1.0.1' identifed by '123123' //ここのreplはslaave端末のために設定されているmaster端末のmysqlデータにアクセスするユーザで、パスワードは123123で、ここの127.1.0.1はslaaveのipです.
mysql>flaush prvieges;パーミッションを更新
mysql> flush tables with read lock; // ,
mysql> show master status;// , , slave
+----------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------+----------+--------------+------------------+
| daixuan.000001 | 406 | | |
+----------------+----------+--------------+------------------+
1 row in set (0.00 sec)
2.slaaveの設定slaaveのプロファイルを先に修正します.my.cnf:
[root@daixuan ~]# vim /usr/local/mysql_slave/my.cnf
「server-ind=1」という行を見つけたら、削除または「server-ind=2」に変更します.つまり、このidをmasterと同じにしてはいけません.でないと、エラーが発生します.また、上から下の2つの行を選択的に増やすこともできます.replicate-do-db=db1,db2
replicate-ignore-db=db1,db2
変更後、slaaveを再起動し、server-ind=1が有効になります.[root@daixuan ~]# service mysqld_slave restart
Shutting down MySQL. SUCCESS!
Starting MySQL. SUCCESS!
マスター上のdb 1ライブラリをコピーしたデータはslaave上にあります.マスターとslaaveは同じサーバーにありますので、操作が簡単になりました.いろいろなマシンであれば、リモートコピーが必要になるかもしれません.この点に注意してください.[root@daixuan~」(Ümysql-S/tmp/mysql_slaave.sock-e「create database db 1」//データベースを作成するdb 1
[root@daixuan~」(Ümysql-S/tmp/mysql_slaave.sock db 1<123.sql //バックアップデータ123.sqlからdb 1への導入
-e , mysql shell , mysql , -e "commond"
,
slave :
[root@daixuan ~]# mysql -uroot -S /tmp/mysql_slave.sock
mysql> slave stop;
Query OK, 0 rows affected (0.06 sec)
mysql> slave start;
Query OK, 0 rows affected (0.01 sec)
その中のマスターロゴfileとマスタードロゴposは上で使います. show master status
調べたデータ.このステップを実行した後、マスターにステップを実行する必要があります.[root@daixuan ~]# mysql -uroot -S /tmp/mysql.sock -e "unlock tables"
次にslaaveの状態を確認します.mysql> show slave status\G;
以下の二つのパラメータがyesであることを確認します.Slave_IO_Running: Yes
Slave_SQL_Running: Yes
四、テストの主従マスター上で以下のコマンドを実行します.
[root@daixuan~」(Ümysql-uroot-S/tmp/mysql.sock
mysql;unlock tables;
mysql;show databases;
+----------++
|Database |
+----------++
|information_schema 124
|db1 |
|mysql |
チーム |
+----------++
4ローソンinセット(0.01 sec)
mysql>drop database db 1;
Query OK、22 rows affected(0.02 sec)
mysql;show databases;
+----------++
|Database |
+----------++
|information_schema 124 //ここでdb 1データベースは削除されました.
|mysql |
チーム |
+----------++
3ローws in set(0.00 sec)
slave :
[root@daixuan ~]# mysql -uroot -S /tmp/mysql_slave.sock
mysql> show databases;
+--------------------+
| Database | //slave db1 ,
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
主は配置が簡単ですが、このような仕組みも非常に脆弱です.もし私達が誤ってデータを書いたら、主従も破壊されます.また、マスターを再起動する場合は、まずslaaveを停止し、つまりslaaveで実行する必要があります. slave stop
コマンドを実行して、マスターのmysqlサービスを再起動します.さもなければ中断する可能性があります.もちろん再起動が終わったら、slaaveを開けてください. slave start
.参考:http://www.apelearn.com/study_v 2/chapter 25.0.