mysql主从简明配置

 

配置环境:
主从配置的环境,MySQL从服务器的版本不能小于主服务器的版本,最好保持版本一致!
 
 
. MySQL主服务器配置
 
1.创建用户
mysql> GRANT ALL PRIVILEGES ON *.* TO dbadmin@'192.168.1.%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql> delete from mysql.user where password="";
mysql> flush privileges;
完成后须要在Slave上作链接测试: mysql -h 192.168.1.10 -u dbadmin –p123456

 
 
 
2.编辑配置文件/etc/my.cnf (确保有以下行)
[mysqld]
server-id = 1
log-bin=mysql-bin
binlog-do-db=GameDB
binlog-ignore-db=mysql
#binlog-do-db=须要备份的数据库名,可写多行
#binlog-ignore-db=不须要备份的数据库名,可写多行
 
 
.MySQL从服务器配置
 
 
1.编辑/etc/my.cnf
server-id=2
log-bin=mysql-bin
master-host=192.168.1.10
master-user=dbadmin
master-password=123456
master-port=3306
replicate-do-db=GameDB
# replicate-do-db=test 须要备份的数据库名
# replicate-ignore-db=mysql 忽略的数据库
# master-connect-retry=60 若是从服务器发现主服务器断掉,从新链接的时间差()
 
 
.验证是否配置正确
 
主从均配置完成后须要首先确认主从须要同步的库是否同步!(能够用 copy 库的方式使其同步)
 
 
登陆从服务器输入以下命令对配置进行验证:
mysql> show slave status\G;
Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
 
 
.其它应用
 
 
一、若是你想使用复制数据文件的方式来备份数据库,那么你只要在从服务器上的mysql命令行先键入slave stop;而后复制数据库文件,复制好了,再在mysql命令行键入slave start;启动从服务器,这样就即备份了数据有保证了数据完整性,并且整个过程当中主服务器的mysql无需中止。

二、修改配置须要注意须要删除从服务器上的/var/lib/mysql/master.info文件,从新启动后会生成新的配置,不然新的配置没法生效!

三、主服务器上的相关命令
show master status
show slave hosts
show logs
show binlog events
purge logs to ‘log_name’
purge logs before ‘date’
reset master(老版本flush master)
set sql_log_bin=

四、从服务器上的相关命令
slave start
slave stop
SLAVE STOP IO_THREAD //此线程把master段的日志写到本地
SLAVE start IO_THREAD
SLAVE STOP SQL_THREAD //此线程把写到本地的日志应用于数据库
SLAVE start SQL_THREAD
reset slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER
load data from master
show slave status(SUPER,REPLICATION CLIENT)
CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWORD= //动态改变master信息
PURGE MASTER [before 'date'] 删除master端已同步过的日志

五、产生的mysql-bin.00000x文件须要按期删除
 
六、同步出错时,若是被同步语句肯定在从库上能够被忽略,那么作如下操做:
slave stop;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;
slave start;
看show slave status \G;中的Seconds_Behind_Master: 0为正常

七、若是由于其余缘由从不能同步,那么能够用下面语句来使从继续同步:
slave stop;
change master to master_log_file=’ mysql-bin.000001’,master_log_pos=8866;
slave start;

 
 
5、同一台服务器上启动多个mysql实例:
如何在同一台服务器上启动多个mysql实例?
修改 /etc/my.cnf: (添加mysqld_multi段,修改添加 mysqldx)
以下配置:

[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
user=mysql

[mysqld1]
datadir=/db/mysql_3306
port = 3306
socket = /tmp/mysql_3306.sock
skip-locking
pid-file=/db/mysql_3306/DBServer-TJ45_3306.pid
skip-name-resolv
key_buffer = 384M
max_allowed_packet = 1M
table_cache =4096
sort_buffer_size = 4M
read_buffer_size = 4M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache = 8
query_cache_size = 32M
query_cache_limit = 1024
thread_concurrency = 8
master-host=192.168.1.10
master-user=ztgame
master-password=123456
master-port=3306
server-id = 2
replicate-do-db=GameServer
replicate-ignore-db=mysql
master-connect-retry=60

[mysqld2]
datadir=/db/mysql_3307
port = 3307
socket = /tmp/mysql_3307.sock
skip-locking
pid-file=/db/mysql_3307/DBServer-TJ45_3307.pid
skip-name-resolv
key_buffer = 384M
max_allowed_packet = 1M
table_cache =4096
sort_buffer_size = 4M
read_buffer_size = 4M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache = 8
query_cache_size = 32M
query_cache_limit = 1024
thread_concurrency = 8
master-host=192.168.1.20
master-user=ztgame
master-password=123456
master-port=3306
server-id=2
replicate-do-db=GameServer
replicate-ignore-db=mysql
master-connect-retry=60

启动:
mysqld_multi –config-file=/etc/my.cnf start|stop|report X         #X就是[mysqldX]
mysqld_multi start                                #启动全部的MYSQL服务
mysqld_multi report 1,2,3,4,5                        #查看启动状态

关闭:
mysqladmin shutdown -h192.168.1.1 -uroot -p123456 --socket=/tmp/mysql_3306.sock -P3306
mysqld_multi stop
 
6、主从复制排错:
mysql 主从同步概括大概有如下三中问题:
 
一、主从网络中断,或主服务器重启,或从服务器重启,从会根据配置文件中的时间(默认1分钟)去自动重连主服务器,直到网络和服务都可正常链接,链接正常后可自动继续同步以前文件,不须要任何人工干预!
 
二、当主从由于人为缘由出现不一样步的时候,能够用下面命令进行同步:
LOAD DATA FROM MASTER;
LOAD TABLE TBLNAME FROM MASTER;
注意,上面命令会对主数据库进行锁操做,若是数据库极大,建议在停机的时候进行,或者用短锁备份查看 show master status; 后,拷贝数据库的方式进行。
 
三、当 BIN-LOG 里面出现 SQL 级别错误致使主从不能同步的时候,能够用下面方法掠过该错误语句行,继续同步:
slave stop;
set global sql_slave_skip_counter=1;
slave start;
 
 
更多关于mysql复制的信息请参考:
相关文章
相关标签/搜索