bitsCN.com
利用本机环境搭建MySQL主从数据库
首先来介绍一下我的配置环境
本机是XP系统 搭载MySQL5.5 IP地址为192.168.1.101(这个地址是自适用的 会随着你的工作地点的改变而改变 但不管怎么变 只要让你的虚拟机——保证能PING通就OK)
由于我没有多余的电脑 所以我决定在虚拟机里再搭建一个MySQL
虚拟机的os是CentOS5.5 MySQL为5.1.18
接下来保证主机和虚拟机相互能通信 我们需要知道虚拟机的IP 在虚拟机的linux里运行ifconfig命令查看eth0的ip 找到第二行 inet addr:192.168.1.115 Bcast:255.255.255.255 Mask:255.255.255.0
到主机XP中 ping 192.168.1.115 再到虚拟机中ping 192.168.1.101 ok 通信成功
现在来修改主从MySQL的配置文件
我将主机XP作为主数据库 虚拟机centos作为从数据库
主数据库配置文件
在MySQL安装目录下的my.ini 不知道安装目录的就在控制台里运行show variables like 'basedir';即可
找到#SERVER SECTION [mysqld] 这一项 前面的#SERVER SECTION 表明下面的配置都是针对MySQL服务器端的
从数据库配置文件
是/etc/my.cnf /etc这个文件夹存放的是linux的各种配置文件 apache php的配置文件也存于此
同样找到[mysqld]
现在我们已经同时打开了主从数据库的配置文件 并找到了合适的写配置项的位置
我们在my.ini里写上server-id=1,在my.cnf里写上server-id=2 对这些配置项的含义不理解的可以另行查阅资料。在这里 server-id 表示给服务器分配一个独一无二的编号 主数据库设为1 从数据库设为2
接下来继续在my.ini里添加如下选项
log-bin=filename.n //开启二进制日志功能 filename.n是日志文件名 要保证可写
binlog-do-db=dbname //只把给定数据库的变化情况写进日志 即需要同步的数据库
binlog-ignore-db=dbname //不把给定数据库的变化情况写进日志 即不需要同步的数据库
在继续往my.cnf里写配置项前 我们需要在主数据库上创建一个同步用户 命令如下
grant replication slave,reload,super on *.* to 'yongbaolinux'@'%' identified by '123456';
这是一个创建数据库用户及相应权限的命令 具体用法可以查阅手册和百度
接下来继续在my.cnf里添加如下选项
master_host=192.168.1.101
master_user=yongbaolinux
master_password=123456
然后将主从数据库分别重启
以root身份进入虚拟机的从数据库 运行mysql>start slave;mysql>show slave status/G
运气好点的话你能看到如下的关键信息:
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.101
Master_User: yongbaolinux
Master_Port: 3306
.............
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
运气不好的话 就只能看到这样
Slave_IO_State:
Master_Host: 192.168.1.101
Master_User: yongbaolinux
Master_Port: 3306
..............
Slave_IO_Running: NO
Slave_SQL_Running: NO
第一栏是空的 也就是说没有连接上master,slave_io也没有运行 我开始以为是配置文件的问题 因为机器重启 路由器重新分配了个ip 192.168.1.102给我 于是我在my.cnf里修改master_host 为102
但是重启数据库之后发现输出信息没有任何变化 第一行依然为空 第二行的master_host依旧是101
难道my.cnf这个配置文件不起作用?后来我把它删了 MySQL依然正常启动了 我不得不说——我凌乱了
我的世界观人生观爱情观在这一瞬间彻底崩溃了 经过多方验证 MySQL的确可以脱离my.cnf的依赖 因为MySQL可以依靠默认启动参数而存在
这下肿么办 于是乎 只能这样了 在console里修改master信息(后来得知 其实用刷新命令flush也行)
mysql>stop slave;
mysql>change master to
>master_host='192.168.1.102',
>master_user='yongbaolinux',
>master_password='123456';
mysql>start slave;
mysql>show slave status/G
ok 现在一切正常了 输出信息被修改了
关于Slave_IO_Running和Slave_SQL_Running,下面还有很多废话要说
每一对master/slave系统中 都会有三个相关线程来互动完成同步工作 其中主上有一个 从上有两个 就是这个slave_io和那个slave_sql。如果一台master与多个slave相连,那么这台master上肯定有与从机数量相同的主线程 而每台slave上都只有一个slave_io和一个slave_sql.我说明白了吧 再不明白 我也么办法了
上述的输出信息显示slave_io_running为NO 就表明这个线程未启动
这三个线程是这样互动的:首先io被创建后 会连接到master上 并要求master发送二进制日志里的语句 这个二进制日志留到后面再长篇大论 master的主线程便会处理这个合理的要求 然后slave_io会读取master传递过来的语句并把它们复制到数据目录下的中继日志(relay logs)中 可见这个slave_io要做两件事 一件是发送请求(如果可以这样理解的话) 另一件是读取并保存数据 最后 slave_sql 出场了 它会读取中继日志(delay logs)中的语句并执行它们而达到更新数据的目的
现在来说说这个二进制日志,mysql有多种日志格式,二进制是其中一种,无论是win还是linux,二进制日志默认都是关闭的 要开启很简单 只要在my.cnf或者my.ini里写上log-bin=path,path就是日志存放路径 如果不写路径只写一个文件名 那么日志文件会被存进datadir,win是C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/data,linux是/var/lib/mysql。配置文件修改后重启 mysql 你到上述两个文件夹下会找到xxx.index 和xxx.000001,xxx是你自定义的文件名,xxx.index是日志索引文件,xxx.000001是第一个日志文件,以后会按照序号递增。(如果你啥也不指定,那么默认日志文件名为mysql-bin)
二进制文件无法正常查看,需要mysqlbinlog工具(linux下是命令)
win下打开DOS控制台,进入C:/Program Files/MySQL/MySQL Server 5.5/bin目录运行mysqlbinlog xxx.000001(linux下直接运行mysqlbinlog命令,[root@localhost xxxx]#mysqlbinlog xxxxx.000001;)
在同步操作前 里面没有sql语句 如果你进行过主数据库的操作 你会发现里面有对应的SQL语句
在打完收工前还有几句废话要说
如果主从数据库的数据表结构不一样 比如从机少一张表或者少某个字段之类的 那么主机进行数据的操作 即DML语句的操作 从机是没反应的 道理显而易见 都不存在那张表 怎么添加数据进去 但是由于中继日志中包含这些DML语句 所以 如果你把从机的数据库结构弄得跟主机一样后 数据便会自动同步上去——需要重启从机数据库
蛋似 对主机进行DDL 即数据对象的定义操作 比如加一张表 删一张表之类的 从机是会自动进行的 道理还是显而易见 因为DDL在从机上本来就是可以执行的
好了 现在你在主机上增删改查 从机上的数据库会自动变化 达到了主从复制的目的
PS:网上有神说 一主多从的架构并不是最好的架构 但目前我也不知道啥是最好的架构了 希望各位大神不吝指教 现在只是主从同步 后面还有用mysql-proxy进行读写分离
bitsCN.com

存储过程是MySQL中的预编译SQL语句集合,用于提高性能和简化复杂操作。1.提高性能:首次编译后,后续调用无需重新编译。2.提高安全性:通过权限控制限制数据表访问。3.简化复杂操作:将多条SQL语句组合,简化应用层逻辑。

MySQL查询缓存的工作原理是通过存储SELECT查询的结果,当相同查询再次执行时,直接返回缓存结果。1)查询缓存提高数据库读取性能,通过哈希值查找缓存结果。2)配置简单,在MySQL配置文件中设置query_cache_type和query_cache_size。3)使用SQL_NO_CACHE关键字可以禁用特定查询的缓存。4)在高频更新环境中,查询缓存可能导致性能瓶颈,需通过监控和调整参数优化使用。

MySQL被广泛应用于各种项目中的原因包括:1.高性能与可扩展性,支持多种存储引擎;2.易于使用和维护,配置简单且工具丰富;3.丰富的生态系统,吸引大量社区和第三方工具支持;4.跨平台支持,适用于多种操作系统。

MySQL数据库升级的步骤包括:1.备份数据库,2.停止当前MySQL服务,3.安装新版本MySQL,4.启动新版本MySQL服务,5.恢复数据库。升级过程需注意兼容性问题,并可使用高级工具如PerconaToolkit进行测试和优化。

MySQL备份策略包括逻辑备份、物理备份、增量备份、基于复制的备份和云备份。1.逻辑备份使用mysqldump导出数据库结构和数据,适合小型数据库和版本迁移。2.物理备份通过复制数据文件,速度快且全面,但需数据库一致性。3.增量备份利用二进制日志记录变化,适用于大型数据库。4.基于复制的备份通过从服务器备份,减少对生产系统的影响。5.云备份如AmazonRDS提供自动化解决方案,但成本和控制需考虑。选择策略时应考虑数据库大小、停机容忍度、恢复时间和恢复点目标。

MySQLclusteringenhancesdatabaserobustnessandscalabilitybydistributingdataacrossmultiplenodes.ItusestheNDBenginefordatareplicationandfaulttolerance,ensuringhighavailability.Setupinvolvesconfiguringmanagement,data,andSQLnodes,withcarefulmonitoringandpe

在MySQL中优化数据库模式设计可通过以下步骤提升性能:1.索引优化:在常用查询列上创建索引,平衡查询和插入更新的开销。2.表结构优化:通过规范化或反规范化减少数据冗余,提高访问效率。3.数据类型选择:使用合适的数据类型,如INT替代VARCHAR,减少存储空间。4.分区和分表:对于大数据量,使用分区和分表分散数据,提升查询和维护效率。

tooptimizemysqlperformance,lofterTheSeSteps:1)inasemproperIndexingTospeedUpqueries,2)使用ExplaintplaintoAnalyzeandoptimizequeryPerformance,3)ActiveServerConfigurationStersLikeTlikeTlikeTlikeIkeLikeIkeIkeLikeIkeLikeIkeLikeIkeLikeNodb_buffer_pool_sizizeandmax_connections,4)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版
中文版,非常好用

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。