您的位置:首页 > 数据库 > MySQL

mysql主从服务器配置 (转)

2010-12-20 14:12 369 查看
/article/4449330.html

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。/article/4449330.html

mysql主从服务器配置

主节点 redhat 5.4 192.168.0.42

从节点 redhat 5.4 192.168.0.44

mysql都是rpm包安装,不存在版本的高低(从节点版本应大于或等于从节点)。

一. MySQL主服务器配置

1.建立用户

grant replication slave on *.* to tom@192.168.8.126 identified by ’123456′;

# grant replication slave on *.* to ‘用户名’@'主机’ identified by ‘密码’;

在从节点上做连接测试,查看是否授权成功: mysql -h 192.168.0.42 -utom -p

2.编辑配置文件/etc/my.cnf

# 确保有如下行

server-id = 1

log-bin=mysql-bin

binlog-do-db=mytest

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.8.125

master-user=tom

master-password=123456

master-port=3306

replicate-do-db=mytest

可选项如下:

# replicate-do-db=test 需要备份的数据库名

# replicate-ignore-db=mysql 忽略的数据库

# master-connect-retry=60 如果从服务器发现主服务器断掉,重新连接的时间差(秒)

到这里,我们的配置就结束了,我们需要把主节点上的数据库mytest手动备份并导入到从节点中,如下:

主机点: mysqldump -uroot -p mytest > mysql.sql

将mysql.sql拷贝到从节点进行导入

从节点:mysql> create database mytest;

shell# mysqldump -uroot -p mytest < mysql.sql

三.验证是否配置正确

登录从服务器输入如下命令:

mysql>start slave;

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event #出现

Master_Host: 192.168.0.42

Master_User: tom

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000002

Read_Master_Log_Pos: 287

Relay_Log_File: mysqld-relay-bin.000009

Relay_Log_Pos: 424

Relay_Master_Log_File: mysql-bin.000002

Slave_IO_Running: Yes # 出现

Slave_SQL_Running: Yes #出现

Replicate_Do_DB: mytest

Replicate_Ignore_DB:

确如如下行一致:

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文件可以删除

reset master;

同步出错时,如果被同步语句确定在从库上可以被忽略

slave stop;

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n;

slave start;

# 看show slave status \G中的Seconds_Behind_Master: 0为正常

参看文章: http://edu.codepub.com/2010/0426/22306.php
本文出自 “linux way” 博客,请务必保留此出处/article/4449330.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: