教你怎么在两台MySQL数据库间成功同步 (怎么用两个东西)
本文目录导航:
教你怎么在两台MySQL数据库间成功同步_MySQL
做开发的时刻要做MySQL的数据库同步,两台装置一样的系统,都是FreeBSD5.4,装置了Apache 2.0.55和PHP 4.4.0,MySQL的版本是4.1.15,都是目前最新的版本。
1. 装置性能 两台主机,区分装置好MySQL,都装置在 /usr/local/MySQL 目录下(装置步骤省略,请参考关系文档),两台主机的IP区分是192.168.0.1和192.168.0.2,咱们把192.168.0.1作为master数据库,把192.168.0.2作为slave主机,咱们驳回单向同步的方式,就是master的数据是主的数据,而后slave被动去master哪儿同步数据回来。
两台主机的性能一样,咱们把关键的性能文件拷贝一下,自动的性能文件是在 /usr/local/MySQL/share/MySQL目录下,区分有 , , 等几个文家,咱们只是测试,经常使用就行了。
MySQL装置完后,自动的性能文件是指定在数据库寄存目录下的,咱们用的是4.1.X的,所以性能文件就应该在 /usr/local/MySQL/var 目录下,于是把性能文件拷贝过去: cp /usr/local/MySQL/share/MySQL/ /usr/local/MySQL/var/ 两台主机做相反的拷贝性能文件操作。
2. 性能Master主机 咱们要把192.168.0.1性能为主MySQL主机(master),那么咱们就要思考咱们须要同步那个数据库,经常使用那个用户同步,咱们这里为了便捷起见,就经常使用root用户启动同步,并且只有要同步数据库abc。
关上性能文件: vi /usr/local/MySQL/var/ 找到一下消息: # required unique id between 1 and 2^32 - 1# defaults to 1 if master-host is not set# but will not function as a master if omittedserver-id = 1 //1为master,2为salve 减少两行: sql-bin-update-same //同步方式binlog-do-db = abc //要同步的数据库 重启192.168.0.1的MySQL主机: /usr/local/MySQL/bin/MySQLadmin shutdown/usr/local/MySQL/bin/MySQLd_safe --user=MySQL & 3. 性能Slave主机 咱们的slave主机重要是被动去master主机同步数据回来,咱们编辑性能文件: vi /usr/local/MySQL/var/ 找到上方相似的消息: # required unique id between 1 and 2^32 - 1# defaults to 1 if master-host is not set# but will not function as a master if omittedserver-id = 1 把上方的server-id修正为2,同时减少一些消息: server-id = 2 //本MySQL是slave主机master-host = 192.168.0.1 //master主机的IPmaster-user = root //衔接master主机的用户master-password = //衔接master主机的明码master-port = 3306 //衔接端口master-connect-retry = 10 //重试次数replicate-do-db = abc //要同步的数据库log-slave-updates //同步的方式 重启192.168.0.2的MySQL主机: /usr/local/MySQL/bin/MySQLadmin shutdown/usr/local/MySQL/bin/MySQLd_safe --user=MySQL & 4. 测试装置 首先检查一下slave的主机日志: cat /usr/local/MySQL/var/xxxxx_err (xxx是主机名) 审核能否衔接反常, 看到相似这样的消息就成功了 11:42:40 MySQLd started 11:42:41 InnoDB: Started; log sequence number 0 /usr/local/MySQL/libexec/MySQLd: ready for : 4.1.15-log socket: /tmp/ port: 3306 Source distribution 11:42:41 [Note] Slave SQL thread initialized, starting replication in log FIRST at position 0, relay log ./new4-relay-bin. position: 11:43:21 [Note] Slave I/O thread: connected to master root@192.168.0.1:3306, replication started in log FIRST at position 4 在Master检查消息 /usr/local/MySQL/bin/MySQL -u root 检查master形态: MySQL> show master status; 检查Master下MySQL进程消息: MySQL> show processlist; 在slave上检查消息: /usr/local/MySQL/bin/MySQL -u root 检查slave形态: MySQL> show slave status; 检查slave下MySQL进程消息: MySQL> show processlist; 你再在master的abc库里建设表结构并且拔出数据,而后审核slave有没有同步这些数据,就能够审核出能否设置成功。
最后,假设有兴味的话,可以钻研一下双击热备份,或许一台master,多台slave的同步成功。
两个数据库同步数据删除一个没有数据的表会有影响吗
不会。
在两个数据库之间同步数据时,假设删除一个没有数据的表,理论不会对同步环节发生影响。
由于同步环节是基于表结构和数据的差异来启动的,假设没有数据的表在两个数据库中的结构和数据都相反,那么删除这个表不会造成任何同步疑问。
mysql如何成功两个数据库数据结构实时同步?
1、假设RDS上的数据没有出现增删改的操作的话,可以生成物理备份或许逻辑备份,而后将物理备份和逻辑备份经过Xtrabackup或许mysqldump将数据导入到自建库。
2、假设在物理备份曾经生成后关于数据库依然有增删改的操作的话,则须要您在复原物理备份后还须要追加后续的binlog文件,可以经过API/管理台失掉binlog文件去追加增量数据。
这里有一个十分须要留意的一点是在解压进去物理备份文件后除了数据和索引文件外还有失掉如下图中的一些文件。
由于在物理备份上运行binlog是须要记载binlog的pos点的,一切的RDS都是驳回主备架构保障高可用性的,为保障主库反常对外提供服务,备份操作是在从库上口头的,然而生成进去的binlog文件却既有或许是主库或许从库上生成(两个binlog文件的pos点是不分歧的)。提供应用户的也或许是这外面的恣意一份,因此在物理备份文件中给用户提供了两个binlog文件的pos点,如下图:
用户在运行binlog的时刻须要两个pos点都测试一下,哪个pos点可以在binlog中找到从这个pos点开局运行binlog。
3、用户想要将RDS上的增量数据同步在自建库的binlog上可以经常使用DTS的数据订阅性能,可以经过SDK生产增量数据即可再自己运行该数据。
文章评论