此需求的可能性:
做所有的数据库同步需要很多无用的空间,如果仅仅用到其中一个数据库,那就做一个数据库的同步就足够了。
步骤一 主数据库开通replication用户
按需求不一样名称和密码以及IP不同:
步骤二 取得当前数据备份,备份mysql库和你要的database2
方式1 从master取得
方式2 从只读的slave取得(假设可以暂停同步一些时间)
注:日志点要拿到如下信息:
Master_Log_File: mysql-bin.000019
Read_Master_Log_Pos: 154055761
注:全部是MyISAM的表,可以直接打包
如果不需要同步用户权限,那mysql库可以忽略了
步骤三 安装好mysql,覆盖此两份数据库文件到var目录
步骤四 配置mysql
比普通的slave配置多写两行,意为同步database2,其它都忽略
如果没有加上忽略的表,那会导致类似的错误发生,即当前处于'database2',而操作'database1'的数据会出错,因为没有该数据库:
步骤五 开始同步
参考阅读:
1 关于没有忽略别的表而产生的问题 小心使用replicate_do_db和replicate_ignore_db
2 关于同步的忽略表的检查顺序 mysql数据库镜像配置
原创内容如转载请注明:来自 阿权的书房
做所有的数据库同步需要很多无用的空间,如果仅仅用到其中一个数据库,那就做一个数据库的同步就足够了。
步骤一 主数据库开通replication用户
按需求不一样名称和密码以及IP不同:
CREATE USER 'slave'@'192.168.1.2' IDENTIFIED BY '***';
GRANT REPLICATION SLAVE ON * . * TO 'slave'@'192.168.1.2' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
GRANT REPLICATION SLAVE ON * . * TO 'slave'@'192.168.1.2' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
步骤二 取得当前数据备份,备份mysql库和你要的database2
方式1 从master取得
FLUSH TABLES WITH READ LOCK; //锁定所有表
show master status; //取得当前日志点
//打包文件或者是直接导出数据,比停止服务好的地方就是有一段读数据库的时间
unlock tables; //解锁
show master status; //取得当前日志点
//打包文件或者是直接导出数据,比停止服务好的地方就是有一段读数据库的时间
unlock tables; //解锁
方式2 从只读的slave取得(假设可以暂停同步一些时间)
slave stop; //先停止同步
show slave status; //取得当前日志点
//打包文件或者是直接导出数据
slave start; //解锁
show slave status; //取得当前日志点
//打包文件或者是直接导出数据
slave start; //解锁
注:日志点要拿到如下信息:
Master_Log_File: mysql-bin.000019
Read_Master_Log_Pos: 154055761
注:全部是MyISAM的表,可以直接打包
如果不需要同步用户权限,那mysql库可以忽略了
tar cfz tmp.tgz /path/to/mysql /path/to/database2
步骤三 安装好mysql,覆盖此两份数据库文件到var目录
步骤四 配置mysql
比普通的slave配置多写两行,意为同步database2,其它都忽略
replicate-do-db=database2
replicate_wild_ignore_table=%.%
replicate_wild_ignore_table=%.%
如果没有加上忽略的表,那会导致类似的错误发生,即当前处于'database2',而操作'database1'的数据会出错,因为没有该数据库:
引用
100831 11:07:49 [ERROR] Slave SQL: Error 'Table 'database1.feed' doesn't exist' on query. Default database: 'database2'. Query: 'insert into database1.feed set appid=1,url='http://www.aslibra.com/'', Error_code: 1146
步骤五 开始同步
CHANGE MASTER TO
MASTER_HOST='192.168.1.4',
MASTER_PORT=3306,
MASTER_USER='slave',
MASTER_PASSWORD='slave',
MASTER_LOG_FILE='mysql-bin.000019',
MASTER_LOG_POS=154055761;
slave start;
MASTER_HOST='192.168.1.4',
MASTER_PORT=3306,
MASTER_USER='slave',
MASTER_PASSWORD='slave',
MASTER_LOG_FILE='mysql-bin.000019',
MASTER_LOG_POS=154055761;
slave start;
参考阅读:
1 关于没有忽略别的表而产生的问题 小心使用replicate_do_db和replicate_ignore_db
2 关于同步的忽略表的检查顺序 mysql数据库镜像配置
原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
正则表达式需要转义的特殊字符
薰衣草园之鸡人君
