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

mysql主从同步

2010-03-30 10:40 369 查看
http://flowercat.javaeye.com/blog/623721

文章分类:数据库


MysqlserverA:192.168.1.1

MysqlserverB:192.168.1.2

同步对象:db1

1、
两台服务器安装centos/rhel 5


注意 mysql
数据库的版本,两个数据库版本要相同


3、

行单项同步配置


a)主服务器master配置

i. 配置Master 的my.cnf文件

My.cnf
配置选项

说明

log-bin=mysql-bin

启动二进制日志系统

binlog-do-db=db1

二进制需要同步的数据库名

server-id = 1

本机数据库ID 标示为主

log-bin=/var/log/mysql/updatelog

设定生成log文件名(保证目录权限)

binlog-ignore-db=mysql

避免同步mysql用户配置,以免不
必要的麻烦

ii. 进入mysql命令行,为slave用户添加同步专用权限

mysql命令

说明

GRANT
REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO
/'repl/'@/'192.168.1.2/' IDENTIFIED BY /'123/';

##给与从服务器用户repl的同步权限

Grant ALL PRIVILEGES ON *.* TO hk@/'%/' IDENTIFIED BY /'123456/';

#
如果需要的话添加管理用户

Flush privileges;

#刷新权限

iii.
停止数据库,并将本地数据库打包拷贝到从数据库上

mysql命令

说明

Service mysqld stop


止服务

Tar -cvf /root/db1.tar /var/lib/mysql/db1

备份主服务器数据库

Scp
/root/db1.tar root@192.168.1.2:/root

远程拷贝到从服务器

Service mysqld
start

启动主服务器mysql服务

b)
同步
slave

从服务器配置

i.
配置slave服务器my.cnf文件

将以下配置启用:

My.cnf 配置选项

说明

server-id = 2

从服务器ID号,不要和主ID相同

master-host =192.168.1.1

指定主服务器IP地址

master-user
=repl

制定在主服务器上可以进行同步的用户名

master-password =123

密码

master-port
=3306

同步所用的端口

master-connect-retry=60

断点重新连接时间

replicate-ignore-db=mysql

屏蔽对mysql库的同步

replicate-do-db=db1

同步数据库名称

ii. 装载主服务器数据库




说明

Cd /var/lib/mysql

进入数据库库文件主目录

Cp /root/db1.tar ./


贝主数据库的tar文件到当前目录

Tar -xvf db1.tar

解包

Service mysqld start


动从数据库服务

iii.查询配置

1、在从服务器(备份服务器)运行下面语句

l此处Slave_IO_Running
,Slave_SQL_Running 都应该是yes;

l表示从库的I/O,Slave_SQL线程都正确开启.

l更多详细信息以
及参数设置,请参考MySQL 5.0 Manual手册.

2、在主服务器A MySQL命令符下:

显示(不同主机结果不同)


意:


同步之前如果主从数据不同步可以采取:上面冷备份远程拷贝法或者在从服务器上命令行同步方法

3、
主从数据库不同步的解决方法

ü 在从服务器执行MySQL命令下:

slave stop;

先停止slave服务

CHANGE
MASTER TO MASTER_LOG_FILE=/'updatelog.000028/',MASTER_LOG_PO S=313361;


据上面主服务器的show master status的结果,进行从服务器的二进制数据库记录回归,达到同步的效果

l
MASTER_LOG_FILE: 主服务器最后产生的二进制文件名

l MASTER_LOG_POS:主服务器最后的“检查点”数值

slave
start;

启动从服务器同步服务

ü 用show slave status/G;看一下从服务器的同步情况

Slave_IO_Running:
Yes

Slave_SQL_Running: Yes

如果都是yes,那代表已经在同步

问题,注意:

Slave_IO_Running:
NO

如果此项为NO多为连接性问题

1、 两个服务器系统之间网络连接问题

2、 数据库用户权限问题

Slave_SQL_Running:
NO

数据库二进制文件权限不对,mysql无法执行

进行双向同步配置

一、先修改原
slave

服务器配置


1. 配置原slave服务器my.cnf文件(红字为添加内容)

server-id
= 2

从服务器ID号,不要和主ID相同

master-host = 192.168.1.1

指定主服务器IP地址

master-user
= repl

制定在主服务器上可以进行同步的用户名

master-password = 123

密码

master-port
= 3306

同步所用的端口

master-connect-retry=60

断点重新连接时间

replicate-ignore-db=mysql

屏蔽对mysql库的同步

replicate-do-db=db1

同步数据库名称

log-bin=/var/log/mysql/updatelog

设定生成log文件名

binlog-do-db=db1

设置同步数据库名

binlog-ignore-db=mysql

<!--
google_ad_client = "pub-4348265167276910";
/* 468x60, 个人博客 */
google_ad_slot = "2046406163";
google_ad_width = 468;
google_ad_height = 60;
//-->

使用play!完成iframe无刷新上传文件
|
mysql同步中断后的处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: