[分享]mysql热复制的资料与常用语句_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2408 | 回复: 0   主题: [分享]mysql热复制的资料与常用语句        下一篇 
张伟
注册用户
等级:列兵
经验:110
发帖:81
精华:0
注册:2011-12-22
状态:离线
发送短消息息给张伟 加好友    发送短消息息给张伟 发消息
发表于: IP:您无权察看 2014-11-11 15:12:03 | [全部帖] [楼主帖] 楼主

SHOW PROCESSLIST
load data from master
Reset MASTER
GRANT REPLICATION SLAVE ON *.* TOIDENTIFIED BY 'slavepass'
slave stop;
slave start;
show slave status;
show master status;
CHANGE MASTER TO MASTER_HOST='192.168.235.128',MASTER_USER='root',MASTER_PASSWORD='ccc',MASTER_LOG_POS=1072,MASTER_LOG_FILE='mysql-bin.000002'
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;


4:MySql数据库同步复制

摘自 longrujun 的 Blog
关键字   MySql数据库同步复制
    该功能可以实现两个数据库同步,主从模式,互相备份模式的功能。
数据库同步复制功能的设置都在mysql的设置文件中体现。mysql的配置文件(windows下为my.ini,Unix/Linux下为my.cnf)
1、实施环境:
  操作系统:2台linux AS 4[up3]

 mysql:mysql-4.1.15.tar.gz
SvrA ip:192.168.1.10
SvrB ip:192.168.1.11


2、配置方法
Demo 1:主从模式[Master->Slave]:A->B
=====step 1:分别在SvrA、SvrB上配置同步DB及Account=====
Step A:SvrA上配置
  1.增加一个用户最为同步的用户帐号:

 GRANT REPLICATION SLAVE ON *.* IDENTIFIED BY ‘rsync.mysql’;


  2.增加一个数据库作为同步数据库:

 create database backup;


  Step B:SvrB上配置
  1.增加一个用户最为同步的用户帐号:

 GRANT REPLICATION SLAVE ON *.* TO IDENTIFIED BY ‘rsync.mysql’;(网上的那个file权限,我试了没有成功.按手册上的来成功了.)


  2.增加一个数据库作为同步数据库:

 create database backup;


    ====step 2:配置Master、Slave参数====== 
主从模式:A->B即  SvrA为master ,SvrB为slave
  1、修改SvrA 中mysql的my.cnf文件。在mysqld配置项中加入下面配置:

server-id=1
log-bin
binlog-do-db=backup


注:Log-bin #设置需要记录log 可以设置log-bin=/Data/logs/mysqllog 设置日志文件的目录[其中mysqllog是日志文件的名称,mysql将建立不同扩展名,文件名为mysqllog的几个日志文件]。

 binlog-do-db=backup #指定需要日志的数据库


配置完后重起数据库服务。
  用show master status 命令看日志情况。
  2、修改SvrB中 mysql的my.cnf文件。在mysqld配置项中加入下面配置:

 server-id=2
master-host=192.168.1.10
master-user=backup.user #同步用户帐号
master-password=rsync.mysql
master-port=3306


  master-connect-retry=10 预设重试间隔10秒
  replicate-do-db=backup 告诉slave只做backup数据库的更新

  配置完后重起数据库

  用show slave status看同步配置情况。
  注意:由于设置了slave的配置信息,mysql在数据库目录下生成master.info
  所以如有要修改相关slave的配置要先删除该文件。否则修改的配置不能生效。
Demo 2、双机互备模式。
  如果在A加入slave设置,在B加入master设置,则可以做B->A的同步。
  在A的配置文件中 mysqld 配置项加入以下设置:

 master-host=192.168.1.11
master-user=backup.user
master-password=rsync.mysql
replicate-do-db=backup
master-connect-retry=10


  在B的配置文件中 mysqld 配置项加入以下设置:

 log-bin
binlog-do-db=backup


  注意:当有错误产生时*.err日志文件。同步的线程退出,当纠正错误后要让同步机制进行工作,运行slave start
  重起AB机器,则可以实现双向的热备。

注:
1、 在处理Slave中MYSQL,默认是启用server-id=1,所以将其修改为server-id=2
2、 在测试时,可以测试一下互连状态

Mysql –h ServerA/B –u backup.user –p


3、 关于Master->多个Slave,可以参考MYSQL官方文档
推荐1、http://dev.mysql.com/doc/
2、http://www.mysql.com/why-mysql/white-papers/
3、http://www.mysql.com/products/database/cluster/

--------------------------------------------------------------------------------
4:mysql数据复制方案
[来自jollr.com]
2003年12月15日 12:00 1楼
   现在找一个提供免费MYSQL的网站真不容易,即便找到了也不提供file权限,管理数据怎么办?用phpMyAdmin在线一条一条的插入?如果想搬家呢?
所以本人在一开始便设计了一套数据管理方案:
在本地将数据保存成TXT文件,FTP上传,PHP程序将其逐行读出,写入MYSQL。导出时反之。

日前偶上OSO论谈,看到有网友正苦于此事,现将源代码公布,供大家分享。如有漏洞,望指正。
由于时间关系本人并没有设计出一个通用的程序,只是举例说明。

mysql 表名:tbn
字段:

ssj: date
ssm: varchar(8)
bos: enum("s","b","f") default s


这里只设计了三个字段,各有其特点,其它类型的字段可参照设计。

tbn.txt文件:

ssj ssm bos
------------------------------------
2001-04-05 record1 2
2001-04-06 record2 1
2001-04-08 record3 3
------------------------------------


为了导入导出TXT的一致性,将mysql的ENUM字段转存TXT文件时以索引号代替,这样便于修改、更新记录
1对应enum字段的s
2对应enum字段的b
3对应enum字段的f
字段间为TAB符

txt2db.php
<?
require "connecthost.inc.php";//连接到MYSQL服务器,可别照抄
$tbn=$tbn;//mysql表名
$rf=file("$tbn.txt");//file是一个将TXT文件按行直接读入数组的函数
$rfs=count($rf);
for ($k=0;$k<$rfs;$k++) {
      $exstr=explode(chr(9),$rf[$k]);//EXPLODE是一个字符串分割函数,CHR(9)为TAB符
      $ins=mysql_query("insert into $tbn (ssj,ssm,bos) values(“$field[0]“,“$field[1]“,$field[2])");
      $inss=$inss+$ins;
}
echo $inss."个记录被插入<BR>";
mysql_close();
?>
db2txt.php
<?
require "connecthost.inc.php";
$tbn=$tbn;
//下面先得到ENUM字段的所有值及对应索引号,
//如果不明白,在DOS下运行一下show columns from $tbn like “bos“,分析一下返回的结果
$fea=mysql_query("show columns from $tbn like “bos“");
$fea_s=mysql_fetch_array($fea);
$fea_s2=$fea_s[“Type“];
$bosset=explode(",",substr($fea_s2,5,(strlen($fea_s)-6)));
$bossets=count($bosset);
for ($j=0;$j<$bossets;$j++){
      $bosset[$j]=substr($bosset[$j],1,strlen($bosset[$j])-2);
}
$qh=mysql_query("select * from $tbn");
$fp=fopen("$tbn.txt","w"); //打开一个用于写入的文件
while ($row=mysql_fetch_array($qh)) {
      for ($i=0;$i<$bossets;$i++){
            if ($row[2]==$bosset[$i]){
                  $bosdm=$i+1; //+1 because mysql enum index from 1,php array index from 0
                  break;
            }//找到当前ENUM字段对索引号
      }
      $record=$row[0].chr(9).$row[1].chr(9).$bosdm.chr(13).chr(10);
      //chr(9)为TAB符,chr(13).chr(10)为回车并换行
      $sl=strlen($record);
      $fps=fputs($fp,$record,$sl);//写入文件
}
echo "$tbn trans over ".$fps;
fclose($fp);
mysql_close();
?>


当然,要先用FTP工具把TXT文件的属性改为可写,才能写入,想必这不用我说。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论