实现两台MySQL数据库数据的同步的方法
作者:星魂陨石 | 来源:互联网 | 2022-11-18 22:24
做开发的时候要做Mysql的数据库同步,两台安装一样的系统,都是FreeBSD5.4,安装了Apache2.0.55和PHP4.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目录下,分别有 my-large.cnf, my-medium.cnf, my-small.cnf等几个文家,我们只是测试,使用my-medium.cnf就行了。mysql安装完后,默认的配置文件是指定在数据库存放目录下的,我们用的是4.1.X的,所以配置文件就应该在 /usr/local/mysql/var 目录下,于是把配置文件拷贝过去: cp /usr/local/mysql/share/mysql/my-medium.cnf /usr/local/mysql/var/my.cnf两台服务器做相同的拷贝配置文件操作。 2. 配置Master服务器 我们要把192.168.0.1配置为主mysql服务器(master),那么我们就要考虑我们需要同步那个数据库,使用那个用户同步,我们这里为了简单起见,就使用root用户进行同步,并且只需要同步数据库abc。 打开配置文件: vi /usr/local/mysql/var/my.cnf找到一下信息: # required unique id between 1 and 2^32 - 1PHPChina 开源社区门户D%wM/x-Y3U_$zs# defaults to 1 if master-host is not setg~8FPv9W37313# but will not function as a master if omitted ML.?K ? NZoW37313server-id = 1 //1为master,2为salve添加两行: sql-bin-update-same //同步形式PHPChina 开源社区门户U$m:}s'vbinlog-do-db = abc //要同步的数据库重启192.168.0.1的mysql服务器: /usr/local/mysql/bin/mysqladmin shutdownPHPChina 开源社区门户0w+g!?&P0d U u#Mb i/usr/local/mysql/bin/mysqld_safe --user=mysql &3. 配置Slave服务器 我们的slave服务器主要是主动去master服务器同步数据回来,我们编辑配置文件: vi /usr/local/mysql/var/my.cnf找到下面类似的信息: # required unique id between 1 and 2^32 - 13FS8oOn lj8o37313# defaults to 1 if master-host is not setPHPChina 开源社区门户9UO7X"TRT Gb$Ku# but will not function as a master if omittedcwO @8pmw37313server-id = 1把上面的server-id修改为2,同时添加一些信息: server-id = 2 //本Mysql是slave服务器.h wjC9C'Hu37313master-host = 192.168.0.1 //master服务器的IPPHPChina 开源社区门户}~q ~Q_master-user = root //连接master服务器的用户PHPChina 开源社区门户*_B\9n(tmaster-password = '' //连接master服务器的密码PHPChina 开源社区门户6O&Ys;rUEmaster-port = 3306 //连接端口S@.@"N&Sb K37313master-connect-retry = 10 //重试次数4`']w^0qW;N2J37313replicate-do-db = abc //要同步的数据库PHPChina 开源社区门户`,Q/C?$hC*llog-slave-updates //同步的形式重启192.168.0.2的mysql服务器: /usr/local/mysql/bin/mysqladmin shutdownPHPChina 开源社区门户.wh1]^~!|V$B0\/usr/local/mysql/bin/mysqld_safe --user=mysql &4. 测试安装 首先查看一下slave的主机日志: cat /usr/local/mysql/var/xxxxx_err (xxx是主机名)检查是否连接正常, 看到类似这样的信息就成功了 051031 11:42:40 mysqld startedPHPChina 开源社区门户W2l0Com R[^ b9S-Rib051031 11:42:41 InnoDB: Started; log sequence number 0 43634PHPChina 开源社区门户UqT7y!Df$c ak"BL/usr/local/mysql/libexec/mysqld: ready for connections.PHPChina 开源社区门户;|0G|;vHFZ7}Version: '4.1.15-log' socket: '/tmp/mysql.sock' port: 3306 Source distributionPHPChina 开源社区门户(J9Z,Kg Lx%] i6OW051031 11:42:41 [Note] Slave SQL thread initialized, starting replication in log 'FIRST' PHPChina 开源社区门户Q9n-BU8[AYc LAat position 0, relay log './new4-relay-bin.000001' position: 4PHPChina 开源社区门户j v"jB\n7s*w051031 11:43:21 [Note] Slave I/O thread: connected to master 'root@192.168.0.1:3306', ]-{eYn F5vK37313replication 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的同步实现。
推荐阅读
本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ...
[详细]
蜡笔小新 2023-12-14 16:44:09
本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ...
[详细]
蜡笔小新 2023-12-12 11:59:08
本文介绍了在express工程中如何调用json数据,包括建立app.js文件、创建数据接口以及获取全部数据和typeid为1的数据的方法。 ...
[详细]
蜡笔小新 2023-12-10 13:09:24
本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ...
[详细]
蜡笔小新 2023-12-14 17:15:19
本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ...
[详细]
蜡笔小新 2023-12-14 14:02:42
本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ...
[详细]
蜡笔小新 2023-12-13 17:48:58
本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ...
[详细]
蜡笔小新 2023-12-13 13:33:01
本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ...
[详细]
蜡笔小新 2023-12-14 18:23:25
本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ...
[详细]
蜡笔小新 2023-12-14 18:18:21
本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ...
[详细]
蜡笔小新 2023-12-14 18:16:27
今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ...
[详细]
蜡笔小新 2023-12-14 17:58:15
在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ...
[详细]
蜡笔小新 2023-12-12 14:56:31
本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ...
[详细]
蜡笔小新 2023-12-12 14:38:07
背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ...
[详细]
蜡笔小新 2023-12-11 01:30:52
本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ...
[详细]
蜡笔小新 2023-12-10 17:25:31