mysql主从创建数据库_MYSQL主从数据库搭建

说明:

这是我自己通过参考网上的资料,根据其步骤搭建MYSQL主从数据库的过程中遇到的一些问题。整理的一篇小记,方便以后查阅。也能给网上的朋友提供一点参考的资料。

写该文章时间:2012/8/27

环境:

(以下是我这次搭建所使用的环境)

主数据库:

系统:ubuntu ; MYSQL  5.1.63 ;ip:192.168.28.128

从数据库

系统:window 7 ;MYSQL  5.5.8 ;ip:192.168.51.127

步骤:

1.在两台mysql上创建同步用户,让两个mysql可以互相通过root/root访问对方。

主执行:GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.51.127' IDENTIFIED BY 'root' WITH GRANT OPTION;

从执行:GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.28.128' IDENTIFIED BY 'root' WITH GRANT OPTION;

2.修改两台的配置文件。

ubuntu 上:

打开/etc/my.cnf : sudo gedit /etc/my.cnf    找到[mysqld]在其下添加下面选项。

log-bin=mysql-bin

innodb_flush_log_at_trx_commit = 1

sync_binlog=1

binlog-do-db=game

binlog-ignore-db=test

binlog-ignore-db=mysql

replicate-do-db=game

其中binlog-do-db和replicate-do-db标记出需要进行同步的数据库,对于多个数据库,重复选项多次即可,如上面的配置则表示同步bookmark和debate。binlog-ignore-db表示不

进行同步的数据库,上面的配置表示不同步test, mysql库。

对于主mysql(192.168.28.128),打开选项:

server-id=1

对于从mysql,打开选项

server-id=2

注意server-id选项必须打开,并且集群中每个mysql都要有一个单独的值,不能重复。一般设置主为1,从为2, 3, 4....。手册上说只要不相同什么整数都没有关系,可以设置为IP的值,如:202,203.

得到主数据库二进制log文件和位置ip:重启mysql,执行sql语句:show master status;

结果:

+------------------+----------+--------------+--------------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB         |

+------------------+----------+--------------+--------------------------+

| mysql-bin.000005 |     106 | game         | information_schema,mysql |

+------------------+----------+--------------+--------------------------+

1 row in set (0.00 sec)

记住File = mysql-bin.000005     Position =106;下面有下划线步骤用到。

window上:

配置my.ini文件

log-bin=mysql-bin        #启用二进制日志文件

server-id=2                 #设置数据库ID

binlog-do-db=databasename        #二进制需要同步的数据库(多个用逗号分隔)

binlog-ignore-db=mysql                #避免同步的数据库(多个用逗号分隔)

#配置主从同步

server-id=2 #从服务器ID

master-host=192.168.28.128 #主服务器IP

master-user=gnh1 #主服务器登陆名

master-password=112233 #主服务器登陆密码

master-port=3306 #主服务器断口

master-connect-retry=60 #断点从新连接时间(秒)

replicate-ignore-db=mysql #屏蔽对MYSQL库的同步

replicate-do-db=wuliu  #二进制需要同步的数据库

文中该颜色部分可能已经过时,据网上消息介绍,Mysql版本从5.1.7以后开始就不支持“master-host” 类似的参数。所以可能报错:

[ERROR] mysqld: unknown variable ‘master-host=192.168.28.128′。

所以只需添加两行:

server-id = 2

replicate-do-db = game   /*共享的数据库*/

执行SQL语句:

change master to master_host=’192.168.28.127,master_user=’root’,master_password=’******’,master_log_file=’mysql-bin.000005′,master_log_pos=106;

查看从数据库配置状态

show slave status;

察看结果字段Slave_IO_State,一般应该为"Waiting for master to send event";此时Slave_IO_Running和Slave_SQL_Running应该为true,

如果不是,在slave端执行: stop slave; start slave; 重启复制进程。Replicate_Do_DB为要复制的数据库,和my.cnf配置的相同。

测试:

如上文操作:实现了game数据库的主从关系。

0).  在master端创建一个表abc,然后察看slave端是否同步创建了。

1). 在abc插入几条记录,察看slave端数据是否同步插入。

2). 更新abc的记录,察看slave端数据是否同步

3). 删除abc的记录,察看slave端数据是否同步

4). 停掉slave服务器,重新执行2,3,4的内容,重启slave,看slave端数据是否同步。

在执行上面的操作过程中,每执行一次都用第6步的方法察看master的File, Position值和slave的Master_Log_File,Read_Master_Log_Pos是否相同,如果主从工作正常,这

两个值在一次同步完成以后(slave status的Slave_IO_State显示:Waiting for master to send event)将会完全相同。

日志检查

如果有错误,检查mysql data目录的 ...machinname.err 文件。

应用切换到slave

如果master mysql坏掉了,需要将应用转移到slave段。首先在slave端执行:show master status; 把输出保存下来,然后再把应用切换过去。保存输出的File和Position值将可以用于以后从slave恢复master.

具体从slave恢复master的办法:

在master端执行:

CHANGE MASTER to MASTER_HOST='192.168.0.203', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='repl', MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=98 ;

其中 MASTER_HOST 为slave的ip, MASTER_LOG_FILE, MASTER_LOG_POS为切换到slave时记录下的File和Position值。

在master执行:start slave;

待master内容基本恢复以后(在master执行:show slave status \G; Slave_IO_State显示为Waiting for master to send event)

将应用切换回master。

待系统稳定后master执行:stop slave停止slave。如果要避免master重启以后自动开启slave,可以将master mysql的data文件夹的master.info文件删掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值