mysql主備配置方法


1. 選擇兩台機器(這里選的centos6.5 final),安裝相同版本的mysql

yum install mysql ;  
yum install mysql-server; 

2. 啟動mysql

service mysqld start

3. 登錄兩個mysql,執行如下命令

GRANT REPLICATION SLAVE,REPLICATION CLIENT on *.* to repl@'mysql機器IP' identified by 'password';  

復制用戶並授權

4. 配置主mysql的/etc/my.cnf

[client]
port    = 3306
socket    = /dev/shm/mysql/mysql.sock
default-character-set = utf8
[mysqld_safe]
socket    = /dev/shm/mysql/mysql.sock
nice    = 0
[mysqld]
user    = mysql
socket    = /dev/shm/mysql/mysql.sock
port      = 3306
basedir   = /usr
datadir   = /mysql/data
log-bin   = mysql-bin
tmpdir    = /tmp
skip-external-locking
bind-address    = 172.16.1.1
key_buffer         = 16M
max_allowed_packet = 16M
thread_stack       = 192K
thread_cache_size  = 8
myisam-recover     = BACKUP
query_cache_limit  = 1M
query_cache_size   = 16M
log_error          = /mysql/log/mysqld.log
expire_logs_days   = 10
max_binlog_size    = 100M
log_bin            = mysql-bin
binlog_format      = ROW
server_id          = 1
innodb_flush_log_at_trx_commit=1
innodb_support_xa  = 1


[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
[isamchk]
key_buffer    = 16M
!includedir /etc/mysql/conf.d/

5. 配置備的mysql

[client]
port    = 3306
socket    = /dev/shm/mysql/mysql.sock
default-character-set = utf8
[mysqld_safe]
socket    = /dev/shm/mysql/mysql.sock
nice    = 0
[mysqld]
user    = mysql
socket    = /dev/shm/mysql/mysql.sock
port      = 3306
basedir   = /usr
datadir   = /mysql/data
log-bin   = mysql-bin
tmpdir    = /tmp
skip-external-locking
bind-address    = 172.16.1.2
key_buffer         = 16M
max_allowed_packet = 16M
thread_stack       = 192K
thread_cache_size  = 8
myisam-recover     = BACKUP
query_cache_limit  = 1M
query_cache_size   = 16M
log_error          = /mysql/log/mysqld.log
expire_logs_days   = 10
max_binlog_size    = 100M
log_bin            = mysql-bin
binlog_format      = ROW
server_id          = 2 # id與主的不同
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1 # slave是read only


[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
[isamchk]
key_buffer    = 16M
!includedir /etc/mysql/conf.d/

6. 重啟兩個mysql

7. 登錄主mysql,執行

show master status\G;

驗證正確性

8. 登錄備mysql,執行

CHANGE MASTER TO
MASTER_HOST='172.16.1.1',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=106;

然后執行

start slave;  
show slave status\G; 

驗證正確性

執行

mysql -urepl -h172.16.1.1 -ppassword

測試備mysql是否能連接到主庫

9. 主備切換

修改my.cnf文件

read-only=1(主)  
#read-only=1(備)

在備的mysql上執行

STOP SLAVE IO_THREAD;  
SHOW PROCESSLIST;

再執行

STOP SLAVE;  
RESET MASTER;  
RESET SLAVE;  
show master status \G;  

在主的mysql上執行  

RESET MASTER;  
RESET SLAVE;

CHANGE MASTER TO   
MASTER_HOST='172.16.1.2',  
MASTER_USER='repl',  
MASTER_PASSWORD='password',  
MASTER_LOG_FILE='mysql-bin.000001',  
MASTER_LOG_POS=106;  

  

start slave

10. 先重啟新的主mysql, 在重啟備mysql

service mysqld restart

  

 

參考: http://blog.csdn.net/liuzhoulong/article/details/48289115


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM