免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3041 | 回复: 5
打印 上一主题 下一主题

求救:mysql主备一些问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-24 11:51 |只看该作者 |倒序浏览
5可用积分
!sun solaris10  suncluster3.2 +FC共享储存 +mysql 5.1.22 目的是实现mysql热备,发生故障能从一台机器切换到另一台机器。

1.由于第一次接触到mysql,对mysql客户端的连接方式不是很清楚,是否像oracle那样基于IP监听,怎么设置才能客户端连接?
2.mysql好象解压不要安装就ok了。。。我做了一连接 ln -s  /export/home/mysql  /usr/local  (/export/home/mysql我mysql安装路径),添加PATH到环境变量后,msqld_safe &启动?mysql >show databases;也正常,mysql 这样就装好了??应用的话假如建表直接是mysql>create。。。就ok了么?
3.通过SUN SVM可以将mysql 安装目录/export/home/mysql在两服务器上都正常挂接了,两边都把mysql启动了,我以为只能一台启动,但是同一时间只能一台机器mysql能执行,将mysql>exit后另一台机器也能通过mysql登陆,是否有方法实现并行?或者同时连接

最佳答案

查看完整内容

以前搞的一些东西,也试验过成功了.不知道对你有没有用.希望有.有需要加我好友,也交个朋友,要实现你说的那些还要加一些HA的配置,也就是高可用性.MSN:jason_wangxu@hotmail.com,因为是刚入行的时候搞的东西,有些不是很准确,但配置是肯定可以成功的.我就不再挑出来了,呵呵,包涵~~数据库同步复制功能的设置都在mysql的设置文件中体现。主要工作原理为slave端记录并且执行master端的操作日志.mysql的配置文件(Linux下为/etc/my.cnf)1 ...

论坛徽章:
0
2 [报告]
发表于 2007-12-24 11:51 |只看该作者
以前搞的一些东西,也试验过成功了.不知道对你有没有用.希望有.有需要加我好友,也交个朋友,要实现你说的那些还要加一些HA的配置,也就是高可用性.MSN:jason_wangxu@hotmail.com,因为是刚入行的时候搞的东西,有些不是很准确,但配置是肯定可以成功的.我就不再挑出来了,呵呵,包涵~~

数据库同步复制功能的设置都在mysql的设置文件中体现。主要工作原理为slave端记录并且执行master端的操作日志.mysql的配置文件(Linux下为/etc/my.cnf)

1、实施环境:
  操作系统:2台linux AS 4,完全安装.
    Mysql为本机rpm.版本为4.17
    SvrA ip:192.168.0.111
    SvrB ip:192.168.0.112
2、配置方法
1:主从模式[Master->Slave]:A->B
====step 1:配置同步的用户帐号====
Step A:SvrA上配置
Shell->service mysqld start
Shell -> mysql –u root
  1.增加一个用户最为同步的用户帐号:
    Mysql> GRANT REPLICATION SLAVE ON *.* TO backup@'192.168.0.112' IDENTIFIED BY '123456';
  2.增加一个数据库作为同步数据库:
    Mysql>create database backup;
Step B:SvrB上配置
Shell->service mysqld start
Shell -> mysql –u root
  1.增加一个用户最为同步的用户帐号:
    Mysql> GRANT REPLICATION SLAVE ON *.* TO backup@'192.168.0.111' IDENTIFIED BY '123456';
  2.增加一个数据库作为同步数据库:
Mysql>create database backup;
关闭MYSQL 数据库。
    ====step 2:配置Master、Slave参数====== 
主从模式:A->B SvrA为master ,SvrB为slave
1.修改SvrA 中mysql的my.cnf文件。
#vi /etc/my.cnf
在mysqld配置项中加入下面配置:
server-id=1
log-bin
binlog-do-db=backup(此处数据库名为举例,可设置多个库,根据需求在此处按此格式添加)
log_err=my-err.log
max_binlog_size=104857600  配置完后重起数据库服务。
用show master status 命令看日志情况。
mysql> show master status;
1.修改SvrB中 mysql的my.cnf文件。
#vi /etc/my.cnf
在mysqld配置项中加入下面配置:
server-id=2
master-host=192.168.0.111
master-user=backup
master-password=123456
master-port=3306
master-connect-retry=60
replicate-do-db=backup
binlog-do-db=backup

====step 3:启动数据库和数据复制====
启动SLAVE从数据库:
Shell->service mysqld start
Shell -> mysql –u root
Mysql>slave stop; #暂停slave从master同步数据.
启动MASTER从数据库:
Shell->service mysqld start
Shell -> mysql –u root
回到SLAVE从数据库终端:
Mysql>start slave;
设置完成,启动成功:此处最好重启mysql服务,重新启动方法:
#service mysqld restart 注:有时候会启动失败,可采用下面启动方法
#usr/bin/mysqladmin –u root shutdown #关闭数据库
#usr/bin/mysqld_safe & #启动数据库
查看是否启动同步复制线程:
Mysql>show slave status;
| Waiting for master to send event | 192.168.0.111 | backup      |        3306 |            30 | l2-bin.000014   |                  79 | l1-relay-bin.000019 |           159 | l2-bin.000014         | Yes              | Yes               | backup          |                     |                    |                        |                         |                             |          0 |            |            0 |                  79 |             159 | None            |                |             0 | No                 |                    |                    |                 |                   |                |                    12 |
如果不同步的解决办法:
在master执行
Mysql>show master status;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| l2-bin.000014 |       79 | backup       |                  |
+---------------+----------+--------------+------------------+
注意master中显示的记录点位置和正在记录的日志文件名,在slave中执行:
Mysql>change master to master_log_file='mysql.000014', MASTER_LOG_POS=79;
Mysql>quit
#service mysqld restart #重启master和slave的mysql.未成功的话执行:
#/usr/bin/mysqladmin –u root shutdown
#/usr/bin/mysqld_safe &

二.双机热备配置
配置双机方法其实就是在上述的cluster基础上略加改动,既在从机上做主机配置,在主机上做从机配置。具体方法如下:
SvrA ip:192.168.0.111
    SvrB ip:192.168.0.112

在确定cluster模式配置成功后(确认方法上面有详述),关闭master(SvrA)数据库:
#service mysqld stop
#vi /etc/my.cnf
在配置文件中加入:
master-host=192.168.0.112   ###设置主机IP地址
master-user=backup         ###设置主机同步库用户名
master-password=123456  ###设置主机同步库密码
replicate-do-db=backup      ###设置主要同步数据库
master-connect-retry=60     ###设置心跳时间(库同步间隔)
log_err=my-err.log          ###同步错误日志
完成后保存退出.启动:
    #service mysqld start
或者:
    #/usr/bin/mysql –u root
配置slave(SvrB)端/etc/my.cnf,加入以下内容:
#vi /etc/mycnf
binlog-do-db=backup
log-bin=my_log
重启mysql服务:
#Service mysqld restart
在SvrA执行:
Mysql>start slave;
Mysql>show slave status;
------------+
| Waiting for master to send event | 192.168.0.112 | backup      |        3306 |            60 | my_log.000024   |                  79 | l2-relay-bin.000010 |             4 | my_log.000024         | Yes              | Yes               | backup          |                     |                    |                        |                         |                             |          0 |            |            0 |                  79 |               4 | None            |                |             0 | No                 |                    |                    |                 |                   |                |                  2741 |

在SvrB执行:;
mysql> show master status;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| my_log.000024 |       79 | backup       |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)
对比以上信息,日志记录文件名,同步数词库名和日志记录点,如果无误代表现在SvrB已经可以做为SvrA的master运行.但它本身也同时在做为SvrA的slave来运行.
在SvrA执行:
Mysql>show master status;
+--------------+----------+--------------+------------------+
| File         | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------+----------+--------------+------------------+
| mylog.000009 |        4 | backup       |                  |
+--------------+----------+--------------+------------------+
1 row in set (0.00 sec)
在SvrB执行
mysql> show slave status;
-------------+-----------------+-------------------+----------------+-----------------------+
| Waiting for master to send event | 192.168.0.111 | backup      |        3306 |            60 | mylog.000009    |                   4 | l1-relay-bin.000003 |           313 | mylog.000009          | Yes              | Yes               | backup          |                     |                    |                        |                         |                             |          0 |            |            0 |                   4 |             313 | None            |                |             0 | No                 |                    |                    |                 |                   |                |                  3575 |
+----------------------------------+---------------+-------------+-------------+
1 row in set (0.00 sec)
对比以上SvrA和SvrB中的主机ip,同步数词库,同步日志文件名,同步日志记录点.确认无误后完成.
注意:在对mysql进行配置后,master端var/lib/mysql/下生成的master.info内容可能会不正确。可能会导致的错误是在将SvrA配置成slave时执行slave start出现大概意思为:“本机未配置成slave服务器,请更改config文件或者执行change master to命令…”的提示,解决办法为:
#Vi /var/lib/mysql/master.info
14
mylog.000007   ###同步后要记录的日志文件
79              ###日志记录点
192.168.0.111   ###主机IP
Backup         ###同步数据库
123456         ###同步数据库密码
3306           ###同步端口
60             ###心跳时间(同步间隔)
0
核对以上信息是否配置正确,为了更真实的测试同步准确性,建议在库中导入数据进行测试.以上mysql cluster模式和双机热备模式配置基本完成.

[ 本帖最后由 shmilygyy 于 2007-12-29 13:24 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-12-24 16:52 |只看该作者
mysql两台机器突然都能连接本机和对方机器,因为是同一个共享储存?会不会出现读写一致性问题??
/etc/my.cnf文件没,是不是将mysql安装目录下/support-files/my-medium.cnf    。。。文件拷过去改名?那目前默认配置文件是什么?
/tmp/mysql.sock是不是可以更改路径?
相当疑惑...在这平安夜的时候!

[ 本帖最后由 帅是帅了点 于 2007-12-24 17:28 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-12-27 10:08 |只看该作者
我不懂liunx的共想存储,可否把详细的设置步骤介绍一下(比如操作命令),关于mysql是基于ip见听的.mysql有安装版和解压版.

另外两边都不要自动启动mysql服务,把他交给负载或者心跳,一台坏了,启动另一个服务./etc/my.cnf建议创建.是改名./tmp/mysql.sock可以更改路径,但要在.cnf指出新的,并重起服务.

论坛徽章:
0
5 [报告]
发表于 2007-12-27 12:03 |只看该作者
原帖由 zxsyl 于 2007-12-27 10:08 发表
我不懂liunx的共想存储,可否把详细的设置步骤介绍一下(比如操作命令),关于mysql是基于ip见听的.mysql有安装版和解压版.

另外两边都不要自动启动mysql服务,把他交给负载或者心跳,一台坏了,启动另一个服务./e ...

你说的是我之前想要实现的热备,一台坏了,由SUN CLUSTER将资源组切换到另一台机器,再启动mysql,但是现在我装成这样了:
通过SUN的SVM共享储存建文件系统,在两机器上都能挂接上,我将mysql直接安装在共享储存上,同一个mysql程序居然能在两台机器上同时运行。。。两台机器都能正常连接,我在1号机器上建表,在2号机器上也能看见,这不和RAC差不多效果了么,挂掉一台机器后mysql也正常,不受影响,不就省掉切换时间了么

论坛徽章:
0
6 [报告]
发表于 2008-01-02 22:39 |只看该作者
多谢兄弟了,你所说的热备master和slave之间的数据相当于两个库了?对于共享空间不是要浪费一半?我把数据文件和安装文件一起放在共享储存上发现数据还是不能实时同步。。。唉!郁闷
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP