MySQL主从配置

 

MySQL主从配置
2009年10月28日 星期三 15:15
配置环境:

. 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

 

 

.其它应用

 

 

1、如果你想使用复制数据文件的方式来备份数据库,那么你只要在从服务器上的mysql命令行先键入slave stop;然后复制数据库文件,复制好了,再在mysql命令行键入slave start;启动从服务器,这样就即备份了数据有保证了数据完整性,而且整个过程中主服务器的mysql无需停止。

2、修改配置需要注意需要删除从服务器上的
/var/lib/mysql/master.info文件,重新启动后会生成新的配置,否则新的配置无法生效!

3、主服务器上的相关命令
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=

4、从服务器上的相关命令
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端已同步过的日志

5、产生的mysql-
bin.00000x文件需要定期删除

 

6、同步出错时,如果被同步语句确定在从库上可以被忽略,那么做以下操作:
slave stop
;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;
slave start
;
看show slave status /G
;中的Seconds_Behind_Master: 0为正常

7、如果因为其他原因从不能同步,那么可以用下面语句来使从继续同步:
slave stop
;
change master 
to master_log_file=’ mysql-bin.000001’,master_log_pos=8866;
slave start
;


 

五、同一台服务器上启动多个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

 

六、主从复制排错:

mysql 主从同步归纳大概有以下三中问题:

 

1、主从网络中断,或主服务器重启,或从服务器重启,从会根据配置文件中的时间(默认1分钟)去自动重连主服务器,直到网络和服务均可正常连接,连接正常后可自动继续同步之前文件,不需要任何人工干预!

 

2、当主从因为人为原因出现不同步的时候,可以用下面命令进行同步:

LOAD DATA FROM MASTER;

LOAD TABLE TBLNAME FROM MASTER;

注意,上面命令会对主数据库进行锁操作,如果数据库极大,建议在停机的时候进行,或者用短锁备份查看 show master status; 后,拷贝数据库的方式进行。

 

3、当 BIN-LOG 里面出现 SQL 级别错误导致主从不能同步的时候,可以用下面方法掠过该错误语句行,继续同步:

slave stop;

set global sql_slave_skip_counter=1;

slave start;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值