首页
关于我们
友链链接
壁纸下载
更多
统计中心
热点搜索
图床上传
Search
1
[Win DD包] wes7-x86-cn-精简,安装后仅占用1.55G存储空间
25,458 阅读
2
保姆级教程!甲骨文ARM DD成Debian10并升级内核成5.10
6,174 阅读
3
N1教程:Openwrt安装docker webui界面(基于flippy openwrt n1固件)
5,195 阅读
4
ZFAKA小店Docker版之 数据的备份和迁移
5,000 阅读
5
甲骨文oracle ARM 重装 Debian 10
4,676 阅读
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
登录
Search
标签搜索
vps
linux
bench
typecho
nginx
empirecms
lnmp
centos
cloudflare
openwrt
n1
google
301
qbittorrent
ssl
rclone
onedrive
mysql
storage
ssh
V+变量
累计撰写
210
篇文章
累计收到
91
条评论
首页
栏目
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
页面
关于我们
友链链接
壁纸下载
统计中心
热点搜索
图床上传
搜索到
4
篇与
的结果
2025-02-18
Mysql数据多服务器同步——mysql主从服务器配置教程
0 前言针对网站采取多服务器配置和负载均衡的情况,网站文件可以采用syncthing、verysync之类的同步软件实现同步更新,但针对mysql如果直接采用直接复制数据库文件则会存在权限和报错问题,这个时候就需要配置主从mysql服务器了,让从服务器复制主服务器的数据。首先我们针对该问题咨询了deepseek,deepseek给出如下提示: 嗯,用户想要配置MySQL的主从服务器,我得先理清楚步骤。主从复制通常用于数据备份、负载均衡或者高可用性,对吧?首先需要确认用户使用的是哪个MySQL版本,不过可能不同版本的步骤类似,但最好还是提一下版本兼容性。接下来,主服务器的配置。用户可能需要修改my.cnf或者my.ini文件,启用二进制日志,设置唯一的server-id。然后创建用于复制的账户,赋予REPLICATION SLAVE权限。之后需要锁定数据库,导出数据,记录当前的二进制日志位置。这部分可能会遇到问题,比如用户可能不知道如何找到正确的日志文件和位置,或者忘记锁定导致数据不一致。然后是配置从服务器。同样需要修改配置文件,设置不同的server-id,可能还要配置中继日志的位置。用户可能在这里出错,比如server-id和主服务器重复,或者路径配置不正确。之后需要导入主服务器的数据备份,这一步如果备份文件很大,可能需要较长时间,或者导入时出现权限问题。设置主从连接的时候,用户需要在从服务器上执行CHANGE MASTER TO命令,输入正确的主库IP、端口、用户名、密码以及日志文件和位置。这里常见的错误是输入信息错误,比如密码不对,或者主服务器的防火墙阻止了连接。启动从服务器复制后,需要检查Slave_IO_Running和Slave_SQL_Running的状态是否为Yes,如果有错误,可能需要查看错误日志来排查。可能的故障点包括网络问题导致主从无法通信,主库的二进制日志没有开启,server-id冲突,或者时间不同步。用户可能还会遇到复制延迟的问题,或者主库有写操作而没使用事务导致数据不一致。需要提醒用户定期检查复制状态,处理可能出现的错误。此外,用户可能需要配置更复杂的拓扑结构,比如链式复制或者多主复制,但基础的主从配置是这些的基础。安全方面也要注意,复制账户的权限应该仅限于复制,避免使用高权限账户。另外,备份和恢复策略也是必要的,以防配置过程中出现数据丢失。最后,应该总结一下步骤,确保用户能一步步跟随操作,并提醒常见问题和解决方法。可能还需要给出一些常用的SQL命令示例,比如SHOW MASTER STATUS和SHOW SLAVE STATUS,这样用户可以直接复制粘贴使用。如果用户的环境有特殊需求,比如云服务器或者不同操作系统,可能还需要调整部分步骤,比如配置文件的位置或者服务的重启命令。1 环境配置1)主服务器(Master):IP 地址 192.168.1.100 2)从服务器(Slave):IP 地址 192.168.1.200 3)MySQL 版本:建议主从服务器版本一致(如 MySQL 5.7/8.0) 4)确保主从网络互通,防火墙开放 3306 端口。2 主服务器(Master)配置1) 修改 MySQL 配置文件(1)编辑 my.cnf(路径一般为 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf):[mysqld] server-id = 1 # 唯一ID,主从不能重复 log-bin = mysql-bin # 开启二进制日志 binlog_format = ROW # 推荐使用ROW格式 expire_logs_days = 7 # 日志保留天数 max_binlog_size = 100M # 单个日志文件大小 # 可选:指定同步的数据库(不配置则默认同步所有) # binlog_do_db = db_name(2)重启 MySQL 服务systemctl restart mysqld2) 创建复制专用账号登录 MySQL,创建用于复制的用户:CREATE USER 'repl'@'192.168.1.200' IDENTIFIED BY 'Repl_Password123!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.200'; FLUSH PRIVILEGES;3)备份主库数据并记录日志位置(1)锁定数据库(防止写入变动):FLUSH TABLES WITH READ LOCK;(2)查看二进制日志状态(记录 File 和 Position)SHOW MASTER STATUS;(3)输出示例+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | | | +------------------+----------+--------------+------------------+(4)保持当前窗口不关闭,新开终端备份数据mysqldump -u root -p --all-databases --master-data > master_db.sql(5)解锁数据库UNLOCK TABLES;3 从服务器(Slave)配置1)修改 MySQL 配置文件(1)编辑 my.cnf:[mysqld] server-id = 2 # 唯一ID,不能与主服务器相同 relay-log = mysql-relay-bin # 中继日志 read_only = 1 # 从库只读(确保数据安全)(2)重启 MySQL 服务systemctl restart mysqld2)导入主库备份数据将 master_db.sql 复制到从服务器,并导入mysql -u root -p < master_db.sql3)配置主从复制连接登录从服务器 MySQL,执行CHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_USER='repl', MASTER_PASSWORD='Repl_Password123!', MASTER_LOG_FILE='mysql-bin.000001', -- 主库记录的File MASTER_LOG_POS=107; -- 主库记录的Position启动复制:START SLAVE;4 验证主从同步1)检查从服务器状态SHOW SLAVE STATUS\G关注以下字段:Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 0(表示无延迟)2)测试数据同步在主库创建表或插入数据,观察从库是否同步。5 常见问题解决1)主从连接失败检查网络:确保主从 3306 端口互通。验证账号权限:确认 repl 用户权限和密码正确。查看错误日志:tail -f /var/log/mysqld.log2)主从数据不一致重新初始化:从库停止复制,重新导入主库完整备份。跳过错误(谨慎使用):STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;3)二进制日志问题主库未开启 log-bin,或 server-id 重复。6 扩展配置GTID 复制:在 MySQL 5.6+ 启用 GTID 简化故障转移。半同步复制:确保主库事务至少传输到一个从库。多主复制:配置双主架构(需处理冲突)。完成上述操作后,主从服务器已配置成功。还需要定期监控 SHOW SLAVE STATUS 确保复制健康。
2025年02月18日
4 阅读
0 评论
0 点赞
2025-01-01
Typecho新增带emoji表情博文出现Database Query Error错误
刚才发布文章出现 Database Query Error,百度了问题,原因是 Typecho 在初始化数据库的时候,选用了 UTF-8 的编码,而在 MySQL 中,UTF-8 只支持最多 3 个字节,而 emoji 是 4 个字节,所以出现该问题。问题只要文章中添加了 emoij,保存文章就会显示 Database Query Error解决方案1 治标办法删除文章中的emoji表情,就可以成功发表了,简单粗暴却有效。2 治本办法:1)修改数据库 charset 为 utfmd4:alter table typecho_comments convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_contents convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_fields convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_metas convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_options convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_relationships convert to character set utf8mb4 collate utf8mb4_unicode_ci; alter table typecho_users convert to character set utf8mb4 collate utf8mb4_unicode_ci;2) 修改 Typecho 配置文件 config.inc.php 中数据库定义参数中的 charset 为 utf8mb4'charset' => 'utf8mb4',3 知识拓展1、MySQL在5.5.3之后增加了这个utf8mb4的编码,所以最低mysql版本支持版本为5.5.3+,若不是,请升级到较新版本;2、mb4就是most bytes 4的意思,可以用来兼容四字节的unicode,存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。如果你要存互联网emoji表情,就需要utf8mb4,而不是utf-8;3、utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换;4、MySQL数据库的 “utf8”并不是真正概念里的 UTF-8,MySQL中的“utf8”编码只支持最大3字节每字符。真正的大家正在使用的UTF-8编码是应该能支持4字节每个字符,MySQL的开发者没有修复这个bug。他们在2010年增加了一个变通的方法:一个新的字符集“utf8mb4”,他们并没有对外公布(可能因为这个bug有点尴尬)。现在很多指南推荐用户使用“utf8”其实都错了;5、建议MySQL和MariaDB用户使用“utf8mb4”而不是“utf8”,毕竟现在是不管使用 Anroid 设备,还是 iOS 设备,如果插入包含有 emoji 表情符号的记录时就报错,还是很尴尬的;6、最重要一点,对数据库操作前,记得备份数据。
2025年01月01日
25 阅读
0 评论
0 点赞
2021-03-28
利用phpmyadmin对MYSQL批量替换字段值操作
作为一个站长,需要经常替换Mysql的字段值,因此下面的操作就成为了必需。1.精确替换UPDATE table_name SET column_name = REPLACE(column_name,“替换此商品”,“替换为该项目”);2.正则表达式匹配UPDATE table_name SET column_name = REGEXP_REPLACE(column_name,“替换此商品”,“替换为该项目”);3.下面就更换mysql中http://sz.al未https://sz.al/为例:UPDATE `config` SET `content` = REPLACE(`content`,'http://sz.al','https://sz.al/');
2021年03月28日
1,303 阅读
0 评论
0 点赞
2021-03-26
Mysql数据库的两种引擎:InnoDB 与 MyISAM对比及选择
按照度量的说明:1)InnoDB支持事务,MyISAM不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了。 2)MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用 3)InnoDB支持外键,MyISAM不支持 4)从MySQL5.5.5以后,InnoDB是默认引擎 5)InnoDB不支持FULLTEXT类型的索引 6)InnoDB中不保存表的行数,如select count() from table时,InnoDB需要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count()语句包含where条件时MyISAM也需要扫描整个表 7)对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引 8)清空整个表时,InnoDB是一行一行的删除,效率非常慢。MyISAM则会重建表 9)InnoDB支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like ‘%lee%’。上面说的太复杂,这里博主简单归纳几条吧:1.Myisam更适合迁移数据库,直接停mysql拷贝数据库文件夹,授权就搞定了;2.Myisam更适合查询比较多的情况,Innodb更适合大规模写入;3.Innodb适合大型网站,一般网站用Myisam就可以了;Innodb是高版本mysql的默认引擎,是未来趋势。最后说明下博主所用引擎为myisam,个人小站,本来用的程序也是轻blog,mysql版本也是老掉牙的5.5.6,所以绰绰有余了,还是一句老话,适合自己的才是最好的
2021年03月26日
989 阅读
0 评论
0 点赞