Chinaunix首页 | 论坛 | 博客
  • 博客访问: 703812
  • 博文数量: 147
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1725
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-22 10:36
文章分类

全部博文(147)

文章存档

2011年(1)

2010年(1)

2009年(35)

2008年(110)

我的朋友

分类: Mysql/postgreSQL

2008-12-01 12:10:05

   mysql复制是指将主数据库的ddl和dml操作通过二进制日志传到复制服务器上,然后在复制服务器上将这些日志文件重做,从而使得从服务器和主服务器的数据保持同步!
  mysql复制的优点:
     如果主服务器上出现了问题可以切换到从服务器上
     可以在从服务器上执行查询操作,降低主服务器的访问压力
     可以在从服务器上进行备份,以避免备份期间影响主服务器的服务
  赋值配置的步骤:
1.确保主从服务器上安装了相同版本的数据库。
2.在主服务器上,设置一个复制使用的帐户,并授予replication slave权限。
  eg:grant relication slave on *.* to indentified by password
3.修改主服务器的配置文件my.cnf,开启binlog,并设置server-id的值,并重启服务器
  【mysqld】
    log-bin =/home/wuxiaoxiao/...
    server-id=1
4.在主服务器上,设置读锁定有效,这个操作确保没有数据库操作,以便获得一个一致性的快照:
 flush tables with read lock;
5.然后得到主服务器上当前二进制日志名和偏移量。为了在从服务器启动后,从这个点开始进行数据的恢复
  show master status
  mysql-bin.00003         102
6.备份数据库文件
7.主数据库备份完毕后,可以恢复写操作
  unlock tables;
8.将主数据库的一致性备份恢复到从数据库上。
9.修改从数据库中的配置文件my.cnf
 [mysqld]
   server-id=2
10.使用--skip-slave-start选项启动从数据库
  eg:/user/bin/mysqld_safe --skip-slave-start &
11.对从数据库服务器做相应的设置,指定复制使用的用户,主服务器的ip,端口,开始执行复制的文件和位置等
eg:mysql>change master to
        >master_host='ip地址'
        >master_port='3306'
        >master_user='test'
        >master_password='ddd'
        >master_log_file='mysql-bin.00003'
        >master_log_pos=102;
12.在从服务器上启动slave线程:
  start slave
13.执行show processlist命令查看连接正确???
14.测试,在主服务器执行插入操作,看看从服务器上是否变化?
 
日常的管理维护:
1.查看从服务器的状态:
show slave status \G;
Slave_IO_Running:该进程从主服务器上读取binlog,写入从服务器的中继日志中
Slave_SQL_Running:该进程读取并执行中继日志
2.主从服务器同步维护:
 由于从服务器的性能问题可能会和主服务器的数据相差较大了!要定期的进行同步:
在主服务器上执行:
flush tables with read lock;
show master status(出现log-bin.00003    974)
在从服务器上:
select master_pos_wait('mysql-bin.00003','974');
这个查询语句会阻塞知道从服务器达到指定的日志文件和偏移量后,返回0,如果返回-1则表示超时退出
在主服务器上:
unlock tables;
3.如果应用中使用了大的blog列或者字符串,那么在从服务器上恢复的时候就会出现‘log event exceeded max_allowed_packet’错误解决如下:
show variables like 'max_allowed_packet';
默认的是1M
set @@global.max_allowed_packet=16777216
设置成16M
4.切换主从服务器:
  假设一台主服务器M,两个从服务器s1,s2!当主服务器出现故障的时候,需要将其中的而一个从数据库服务器(s1)切换成主服务器,同时修改另一个从服务器的配置,使之指向新的主服务器,还要通知应用修改主数据库的ip
下面详细介绍切换主从数据库的步骤:
在s1,s2上(从数据库服务器上):
首先:stop slave TO_THREAD;
然后:show processlist \G
     直到看到状态has read all relay log表示更新执行完毕
在s1上,执行stop slave停止从服务,然后reset master
在s2上,执行stop slave,然后change master to master_host='s1的ip',最后:start slave
 
 
 
 
阅读(2113) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-06-22 14:21:06

nice