首页
关于我们
友链链接
壁纸下载
更多
统计中心
热点搜索
图床上传
推荐
剩余价值
磁链清理
IP定位
Search
1
[Win DD包] wes7-x86-cn-精简,安装后仅占用1.55G存储空间
25,954 阅读
2
v2rayN基础使用教程、配置说明、添加订阅、路由选择
18,349 阅读
3
鸿蒙Next也能科学上网?Clash Meta for harmorny next os
11,824 阅读
4
纯血鸿蒙系统如何安装电报、推特、Tiktok和油管APP
9,408 阅读
5
保姆级教程!甲骨文ARM DD成Debian10并升级内核成5.10
6,504 阅读
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
MV频道
登录
Search
标签搜索
vps
typecho
linux
bench
mysql
cloudflare
nginx
lnmp
empirecms
ssl
openwrt
google
centos
docker
qbittorrent
telegram
n1
301
free
serverstat
V+变量
累计撰写
304
篇文章
累计收到
256
条评论
首页
栏目
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
MV频道
页面
关于我们
友链链接
壁纸下载
统计中心
热点搜索
图床上传
推荐
剩余价值
磁链清理
IP定位
搜索到
15
篇与
的结果
2026-06-03
Discuz X3.5升级到Discuz X5及数据库迁移后出现的约束CONSTRAINT失败 + 主键重复Duplicate entry for key问题的解决
1 背景博主最近把手头上唯一的论坛从DISCUZX3.5升级到Discuz X5,另外把建站VPS提供商从netcup转到Hostdizre,原因是Netcup的月租价格从5.75O提到6.81O,本来网站就没什么流量,索性就以80元的价格忍痛出掉了VPS1000 G11翻倍款(2024年黑五),迁移过程中无论是mysql导入,还是phpmyadmin,都出现了约束CONSTRAINT失败 + 主键重复Duplicate entry for key问题,借助AI找到了解决办法,这里记录一下,方面以后自己查阅。2 升级教程升级比较简单,直接按官方教程就行了:从 X5.0 开始安装程序内置升级程序,升级前请关闭站点、关闭所有插件。请详细阅读下面的内容:1、确保您的旧版本 Discuz! 必须为 X3.5 版本,如不满足版本要求请先升级到此版本; 2、确保 UCenter 和 Discuz! 部署在一个数据库中; 3、确保您已备份了数据库和程序文件,将旧版本程序文件移动到其他目录下; 4、将旧版本的配置文件 config/config_global.php、config/config_ucenter.php 复制到当前新版本的 config/ 目录中; 5、点击“下一步”开始升级; 6、升级完成后可以将旧版本中 source/plugin/ 目录下的插件文件挑选后复制到新版本的对应目录下、将 template/ 目录下的模板文件挑选后复制到新版本的对应目录下(不要复制 template/default/ 目录); 7、升级完成后 data/attachment/ 目录以及 data/ 目录下其他目录请酌情复制;如旧版本应用涉及其他目录中的文件,请自行咨询相关开发者复制;3 数据迁移3.1 直接用mysql命令迁移在源服务器终端导出数据mysqldump -u root -p --databases database_name> database_name.sql在新服务器终端导入数据mysql -u root -p database_name --force < database_name.sql3.2 CONSTRAINT约束失败问题博主在导入数据时,出现如下错误:ERROR 4025 (23000) at line XXXX: CONSTRAINT `pre_common_member_profile.fields` failed for `database_name`.`pre_common_member_profile通过AI找到了解决办法:这个错误明确指出了在导入 SQL 文件的第 XXXX 行时,pre_common_member_profile 表的 fields 字段数据违反了 MariaDB 的 CHECK 约束。由于是在恢复数据库,最安全、最高效的做法是临时关闭约束检查,而不是去逐条修改备份文件中的数据(这既耗时又容易破坏备份完整性)。出现这个问题的原因:原因说明MySQL → MariaDB 迁移MySQL 8.0 之前对 CHECK 约束是“只解析不执行”的,旧数据可能包含空字符串或非法序列化值;MariaDB 会严格校验Discuz! 版本差异新版 Discuz! 建表脚本为 fields 添加了格式约束(如必须为合法 PHP 序列化数组),但您的备份来自旧版,存在 '' 等不合规值备份导出环境宽松原服务器可能禁用了约束检查或使用了更宽松的 sql_mode,导致脏数据被成功备份方法一:命令行导入时直接注入参数(最推荐)如果您使用命令行恢复,无需修改 SQL 文件,直接在命令中追加参数即可跳过该约束:mysql -u root -p database_name --init-command="SET SESSION check_constraint_checks=0;" < database_name.sql原理:--init-command 会在每次连接建立时自动执行,确保整个导入过程都在禁用约束检查的状态下进行。方法二:修改 SQL 备份文件头部如果您使用宝塔面板、Navicat 或其他工具导入,无法传递命令行参数,请用文本编辑器(如 Notepad++ / VSCode)打开 .sql 文件,在最顶部添加:SET SESSION check_constraint_checks = 0; SET FOREIGN_KEY_CHECKS = 0; SET UNIQUE_CHECKS = 0; SET sql_mode = '';保存后重新导入。导入完成后,这些设置会随会话结束自动失效,无需手动恢复。🛠️重要提醒不要尝试删除约束后再导入:删除/重建约束需要 ALTER TABLE,在大表上非常慢,且导入后还需重新添加,远不如临时禁用检查高效。不要手动编辑第 6868 行:SQL 备份文件通常有数百 MB 甚至 GB 级别,用普通编辑器打开极易卡死或损坏文件。即使定位到该行,后续可能还有成千上万条同样违规的数据。此操作仅影响当前导入会话:check_constraint_checks=0 是会话级变量,不会影响数据库中已有的约束定义,也不会影响其他连接或后续的正常使用。3.3 主键重复Duplicate entry for key博主在导入mysql数据库过程中还出现了主键重复问题:ERROR 1062 (23000) at line 19: Duplicate entry 'XXXXX' for key 'PRIMARY'这个错误 ERROR 1062 (23000): Duplicate entry 'XXXXX' for key 'PRIMARY' 表示在导入 SQL 备份时,目标数据库表中已经存在主键为 XXXXX 的记录,导致插入冲突。这通常发生在以下两种情况:非空库恢复:目标数据库不是全新的,里面已有旧数据或之前导入失败残留的数据。SQL 文件问题:备份文件中包含了 CREATE TABLE 但没有 DROP TABLE IF EXISTS,或者您正在重复导入同一个备份文件。Qwen3.7-Max这个错误 ERROR 1062 (23000): Duplicate entry '38472' for key 'PRIMARY' 表示在导入 SQL 备份时,目标数据库表中已经存在主键为 38472 的记录,导致插入冲突。这通常发生在以下两种情况:非空库恢复:目标数据库不是全新的,里面已有旧数据或之前导入失败残留的数据。SQL 文件问题:备份文件中包含了 CREATE TABLE 但没有 DROP TABLE IF EXISTS,或者您正在重复导入同一个备份文件。🛠️ 解决方案(按场景选择)方案1:全新恢复 / 覆盖现有数据(最常见)如果您确认目标数据库可以被完全覆盖,请在导入命令中添加 --force 参数,让 MySQL 忽略重复键错误并继续执行后续语句:mysql -u root -p database_name --force < database_name.sql⚠️ 注意:--force 会跳过所有报错行(包括重复键、约束失败等),但不会回滚已成功的部分。结合您之前的 #4025 错误,建议组合使用:mysql -u root -p database_name --force --init-command="SET SESSION check_constraint_checks=0;" < database_name.sql方案二:确保干净恢复(推荐用于生产环境)如果希望避免任何数据混淆,最稳妥的做法是先清空再导入:# 1. 删除并重建数据库(彻底清除旧数据) mysql -u root -p -e "DROP DATABASE IF EXISTS \`database_name\`; CREATE DATABASE \`database_name\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" # 2. 重新授权(如需要) mysql -u root -p -e "GRANT ALL PRIVILEGES ON \`bbs-gvars-com\`.* TO 'your_user'@'localhost'; FLUSH PRIVILEGES;" # 3. 导入备份 mysql -u root -p database_name --init-command="SET SESSION check_constraint_checks=0;" < database_name.sql3.4 🛠️ 一键解决命令结合所有问题(约束失败 + 主键重复),使用以下组合命令一次性解决:mysql -u root -p database_name \ --force \ --init-command="SET SESSION check_constraint_checks=0; SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0; SET sql_mode='';" \ < database_name.sql参数说明:--force:跳过 Duplicate entry 等所有非致命错误,继续执行后续 SQLcheck_constraint_checks=0:解决当前 #4025 CONSTRAINT failed 及之前的 fields 约束错误FOREIGN_KEY_CHECKS=0:避免外键顺序导致的导入失败sql_mode='':解决 MODIFY COLUMN 语法兼容性问题所有设置均为 SESSION 级别,仅影响本次导入连接,不会污染数据库全局配置3.5🔍 为什么帖子内容也会触发约束?原因具体表现MySQL → MariaDB 迁移MySQL 5.7/8.0 对 CHECK 约束“只解析不执行”,旧帖内容可能含 \0、截断的 UTF-8 字符等;MariaDB 10.3+ 会严格校验Discuz! 版本升级X3.5 为 content 添加了长度/格式约束,但备份来自 X3.4 或更早版本,存在历史脏数据编辑器/插件残留第三方编辑器或采集插件写入的内容不符合原生 Discuz! 格式规范3.6⚠️ 导入后必须执行的验证与修复约束检查被临时禁用意味着脏数据会被原样写入。导入完成后,请务必执行以下检查和修复:-- 1. 检查 content 为空的异常帖子 SELECT pid, tid FROM pre_forum_post WHERE content = '' OR content IS NULL; -- 2. 检查包含非法字符或截断内容的帖子(可选) SELECT pid, tid FROM pre_forum_post WHERE content NOT REGEXP '^[\x09\x0A\x0D\x20-\x7E\x{4E00}-\x{9FFF}]*$'; -- 3. 统一修复空内容为 Discuz! 默认占位符 UPDATE pre_forum_post SET content = '[内容已丢失]' WHERE content = '' OR content IS NULL;3.7💡 关键提醒不要逐行定位 line 16:SQL 备份文件中可能有成千上万条违规帖子内容,逐条修复不现实。不要删除约束定义:ALTER TABLE ... DROP CONSTRAINT 在大表上极慢,且导入后还需重建,远不如临时禁用高效。--force 的副作用:它会跳过所有错误(包括真正的语法错误)。导入完成后务必通过行数对比验证数据完整性:SELECT COUNT(*) FROM pre_forum_post;-- 与备份源或导出时的记录数对比如果仍报其他 CONSTRAINT 错误:说明还有其他表存在同样问题,上述 --init-command 已经覆盖了所有常见约束类型,理论上不应再出现同类报错。
2026年06月03日
22 阅读
0 评论
0 点赞
2026-05-23
Debian等新系统利用mysql导入数据时提醒libtinfo.so.5依赖库不存在的问题解决
1.背景因Netcup今年5月份后开始涨价,原价5.75欧/月的VPS1000翻倍款涨到6.81欧,博主最近把手头上的VPS从netcup迁移到阿里巴巴香港轻量服务器。在导入mysql数据的时候,系统会报错:mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory。mysql -u root -p <database-name> < <database-name>.sql博主建站环境为:操作系统:Debian 13 web服务器:Nginx 1.26.0 数据库 Mariadb 10.11.7-MariaDB-log - MariaDB Server PHP: 8.3.72.原因排查通过检索和AI查询,了解到这个报错非常典型,通常发生在使用较新的 Linux 系统(如Debian、Ubuntu 20.04+ 等)去运行一个较旧版本的 MySQL 时。简单来说, MySQL 程序启动时需要一个叫 libncurses.so.5 的老版本依赖库,但新系统里默认只安装了更新的 libncurses.so.6,导致 MySQL 找不到“老伙计”而无法启动。3.处理方案3.1 手动创建软链接通过“欺骗”的方式,给系统里现有的新版本库创建一个旧名字的快捷方式(软链接),让 MySQL 以为找到了它需要的文件。3.1.1 建立软连接ln -s /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64-linux-gnu/libncurses.so.5 ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5注:如果提示找不到源文件,可以先用 find /usr -name "libtinfo.so.6" 确认一下你系统中 libtinfo.so.6 的实际路径3.2 刷新动态链接库缓存创建完软链接后,建议执行一下ldconfig 刷新动态链接库缓存,然后再尝试启动或登录 MySQL,这个问题应该就彻底解决了。3.2 通过系统包管理器安装如果你是 Ubuntu 20.04+ 或 Debian 系统,可以直接安装 libtinfo5 包,我的debian13直接安装这个依赖包时失败的。sudo apt update sudo apt install libtinfo5 -y如果你是 CentOS 8/9、RHEL、Rocky Linux 等系统:安装 ncurses 的兼容库通常会自动包含 libtinfo。执行:sudo dnf install ncurses-compat-libs -y
2026年05月23日
38 阅读
0 评论
0 点赞
2025-05-08
通过1panel使用docker部署bitwarden并配置mysql数据库和CDN加速以及自动化备份教程
在此之前你需要准备:聪明的脑子,灵活的手 ,友善的嘴巴,认真的耳朵。废话不多说我们开始吧!一、环境准备与1Panel安装1.服务要求推荐系统:Ubuntu/debian(务必使用最新的系统,不建议使用Centos)硬件配置:1核CPU以上、2GB内存、20GB存储(支持轻量级MySQL运行)域名:需要自己的独立域名,可选是否备案(用于HTTPS证书申请和CDN加速)2.开始搭建首先通过你能想象到的一切方法打开你购买的服务器ssh终端连接然后输入以下命令Ubtnuncurl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.shDebiancurl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh一路回车最后记录下ssh终端打印的1panel信息(外网/内网连接地址,用户名和密码),浏览器打开服务器的1panel网页管理地址登录到1panel管理面板后恭喜你已经完成了第一小步子 xhj016二.部署bitwarden前的准备1.登入1panel后找到侧边栏选择应用商店并打开选择安装如下软件1)mysql(数据库,最新版本即可)2)OpenResty(web平台,用于反向代理bitwarden到外网)这两个软件直接点击搜索然后一键安装即可2.创建一个mysql数据库点开1panel侧边栏的数据库按钮跳转的数据库页面后请按照如下配置创建数据库: 数据库名称(自定义) 数据库用户名(自定义) 数据库密码(自定义,建议使用复杂密码) 权限(所有人%)确定配置后点击确认即可3.创建一个网站用于反向代理bitwarden服务点开1panel侧边栏的网站按钮>网站选项跳转网站管理页面后请按照如下配置创建反向代理网站网站类型(反向代理) 分组(默认) 主域名(你为bitwarden准备的专用域名) 其他域名(默认不写) 监听IPV6(可选可不选) 代号(同网站目录地址,默认即可) 代理地址(填写bitwarden服务地址端口,本篇教程为http://127.0.0.1:8080)三.开始部署bitwarden1.打开1panel的应用商店搜索Bitwarden2.点击安装(请按照如下要求配置)名称(随意,推荐使用Bitwarden,BitwardenServer,Vaultwarden,VaultwardenServer等名字) 版本(默认即可,后续会通过自定义 compose修改安装版本) 端口(这里使用8080) 高级设置(这里要开启) 容器名字(与第一个配置“名称”一样即可) 端口外部访问(这里不要开) CPU限制(默认即可) 内存限制(默认即可) 编辑 compose文件(这里要开启) 拉取镜像(开启)3.自定义 compose配置networks: 1panel-network: external: true # 定义服务列表 services: # 服务名称:vaultwarden(Bitwarden 密码管理器的 Rust 实现) vaultwarden: # 指定容器名称(使用环境变量 CONTAINER_NAME 的值) container_name: ${CONTAINER_NAME} # 部署配置(通常用于 Docker Swarm,但单机模式也可识别) deploy: # 资源限制配置 resources: limits: # 限制 CPU 核数(使用环境变量 CPUS 的值) cpus: ${CPUS} # 限制内存使用量(使用环境变量 MEMORY_LIMIT 的值) memory: ${MEMORY_LIMIT} # 环境变量配置 environment: # 启用管理员令牌 ADMIN_TOKEN: true # MySQL 数据库连接字符串(格式:mysql://用户名:密码@主机:端口/数据库名) # 这里按照格式填写之前创建的数据库连接信息 DATABASE_URL: "mysql://vaultwarden:passwo@1Panel-mysql-OeCW:3306/vaultwarden" # 使用官方最新版镜像 image: vaultwarden/server:latest # 容器标签(用于元数据管理) labels: createdBy: Apps # 标识创建者 # 连接到的网络 networks: - 1panel-network # 使用预定义的 1panel-network # 端口映射(格式:主机IP:主机端口:容器端口) ports: - ${HOST_IP}:${PANEL_APP_PORT_HTTP}:80 # 将主机端口映射到容器 80 端口 # 重启策略:始终自动重启 restart: always # 数据卷映射 volumes: # 将宿主机 /opt/vaultwarden 目录挂载到容器 /data 目录 - /opt/vaultwarden:/data四.启动Bitward并配置自动备份以上步骤全完成后就可以尝试启动Bitwarden服务了,这时候把第二部分第三步创建的网站的域名解析到服务器上,后打开域名应该就可以访问vaultwarden了(如果不行请检查是否配置正确)这时候回到1panel管理面板页面开始配置自动备份
2025年05月08日
326 阅读
0 评论
0 点赞
2025-03-24
Mysql升级后如何导入之前低版本数据——mysql5数据导入到mysql8
Mysql8是很多服务器使用的mysql版本,但一些运行的老网站由于内存或者之前版本问题,使用的都是老旧的5.x版本。理论上的两种升级方式:1)inplace就地升级大致思路:在一台服务器上,进行原版本升级到新版本,风险较大。如果是主从环境可以先就地升级从库,然后再升级主库,滚动方式升级。1)逻辑迁移升级大致思路:准备新的服务器,然后将数据从源库中逻辑导出,然后再导入到新的数据库中,数据量大的时候,会很慢。例如:如果是一主一从(主->从1),在有条件的情况下,可以新准备一台服务器,采用物理备份的方式将数据备份恢复到新的服务中,然后构建从库的从库(主->从1->从2),最后将从2进行inplace方式升级,然后进行业务验证,验证完成后构建主->从2。升级从1,将(主->从1)的从1断开,从1升级完成后,构建(主->从1,主->从2),此时可以升级主库,主库停止写业务,主从关系变更为(从1->从2)原从1承担写库,待主库完成升级后重新加入主从即可。本次采用就地升级的方式,即直接使用原来的data目录1. 流程概述在将MySQL 5数据库导入到MySQL 8之前,我们需要完成以下几个步骤:步骤描述1.备份MySQL 5数据库2.安装MySQL 83.迁移MySQL 5数据库4.测试迁移结果5.错误排查下面我们将逐步介绍每个步骤需要做什么,并提供相应的代码示例。2. 备份MySQL 5数据库在进行数据库迁移之前,我们需要先备份MySQL 5数据库以防止数据丢失。可以使用以下命令来备份数据库:$ mysqldump -u <username> -p<password> <database_name> > backup.sql其中,是MySQL 5数据库的用户名,是该用户的密码,<database_name>是要备份的数据库名。上述命令将会将数据库备份文件保存为backup.sql。3. 安装MySQL 8在迁移数据库之前,您需要先安装MySQL 8。根据操作系统和个人喜好选择合适的安装方式。安装完成后,请确保MySQL 8服务已经启动。4. 迁移MySQL 5数据库在将数据库从MySQL 5迁移到MySQL 8之前,我们需要创建一个新的数据库来存储迁移后的数据。可以使用以下命令在MySQL 8中创建一个新的数据库:CREATE DATABASE <new_database_name>;其中,<new_database_name>是您想要创建的新数据库的名称。接下来,我们可以使用以下命令将MySQL 5备份文件导入到MySQL 8中:$ mysql -u <username> -p<password> <new_database_name> < backup.sql这将会将备份文件中的数据导入到新的MySQL 8数据库中。5. 测试迁移结果完成数据库迁移后,我们需要测试迁移结果以确保数据正确导入。可以使用以下命令登录到MySQL 8并查看数据:$ mysql -u <username> -p<password> <new_database_name>之后,您可以执行SQL查询来验证数据是否正确导入。6. 错误排查1)sql_require_primary_key未定义打开要导入的.sql文件,找到下面代码,在后面加入set sql_require_primary_key = 0;即可SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00";最终代码为SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; set sql_require_primary_key = 0;2)错误号为1418的错误导入sql文件时会报错,函数无法创建调用存储过程或者函数以及触发器时,会出现错误号为1418的错误:解决方法:在my.ini中的[mysqld]下添加配置:log-bin-trust-function-creators=1,即可关闭。3)mysqldump还原utf8mb4数据库的时候遇到报错mysqldump: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file查看mysqldump --version mysqldump Ver 10.13 Distrib 5.5.73, for debian-linux-gnu (x86_64)还是MySQL 5.5.73的很老版本,在网上下载了MySQL-5.6.17-1.el6.x86_64.rpm-bundle.tar,解压后得到MySQL-client-5.6.17-1.el6.x86_64.rpm(只安装Client也可以只获取这一个文件)。因为权限和版本兼容性的原因,需要在.sql文件中去掉SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN; SET @@SESSION.SQL_LOG_BIN= 0; SET @@GLOBAL.GTID_PURGED='16283487-45bd-11e7-9ef2-7cd30ac3f3fe:1-299493847, 43c1dc25-dbbe-11e5-a66f-a0d3c1f93abc:1-543829194, 500866a4-e70d-11e8-802d-7cd30adb113a:1-416157186, 5fd4db5e-fc00-11e6-be1d-a0d3c1f43dd0:1-93905767, 6567f578-fecb-11e7-95aa-7cd30adb15da:1-18921416, 72617ba5-eca2-11e9-a9e9-7cd30ae00d0e:1-704516432, 83fdc286-bbba-11e7-a056-a0d3c1f8397c:1-12603194, 8d21b36e-b6e5-11e6-bb7e-a0d3c1f8397c:1-41968137, a0bcb219-2379-11e5-b4d9-a0d3c1f43dd0:1-3390044, a7f7b8d7-da4f-11ea-b7c2-506b4b4197cc:1-828737650, b667cab5-1e31-11e5-926a-a0d3c1f93abc:1-1814845499, c0e956af-d2bd-11eb-8bbb-7cd30adb159e:1-116084394, c37acaf4-1e31-11e5-926b-a0d3c1f43dd0:1-2289807, e73f79ba-2a90-11e5-a317-a0d3c1f43dd0:1-1425172325'; SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;这些内容,可以手工编辑,也可以用Linux命令sed来批量删除:sed -i '17,37d' /sql-backup/$i-2021-7-22.sql sed -i '/SQL_LOG_BIN/d' /sql-backup/$i-2021-7-22.sql4)备份的时候遇到表过大报错的问题:mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `kor_postcode` at row: 4646629这个表有2G多数据,1G多索引。采取的办法:RDS的MySQL参数net_read_timeout从30改为120还是不行,mysqldump添加--quick 参数还是不行,添加参数--max_allowed_packet=2000M也还是不行,又按照这篇中改了--compress --skip-lock-tables --single-transaction --skip-extended-insert等都还是不行,最后是修改了ECS上/etc/my.cnf,添加两行:[client] max_allowed_packet=1024M再次运行mysqldump就可以了。5)还原的时候遇到主键等重复的报错:Warning: Using a password on the command line interface can be insecure. ERROR 1062 (23000) at line 4410: Duplicate entry 'pass' for key 'PRIMARY'这个问题在search_total和其它表都有可能出现,特别是一些英文以外的字符,有可能是与字符集有关,但也没有找到具体解决办法。尝试手工去打开.sql文件,找到对应的行、对应的字符去修改或者删除,但又是太多了不好找,而且vim打开、查找都非常慢。后来找了一些资料,干脆把这种重复的覆盖或者忽略,办法是在mysqldump命令中添加--replace或者--insert-ignore参数。实测这样导出的.sql文件是可以用mysql命令正常导入的。最后的语句是这样的:mysqldump -h hostname -u username -ppassword --opt --default-character-set=utf8mb4 --set-gtid-purged=OFF --replace database > database.sql mysql -h hostname -u username -ppassword -f -D database < database.sql7.结论通过按照上述步骤,您将能够成功将MySQL 5数据库导入到MySQL 8中。请确保在执行每个步骤时使用正确的命令和参数。尽管本文提供了一些基本的代码示例,但您可能还需要根据具体情况进行一些调整和修改。如果在迁移过程中遇到任何问题,请查阅MySQL官方文档或寻求专业开发者的帮助。
2025年03月24日
296 阅读
0 评论
0 点赞
2025-03-23
修改phpmyadmin配置mysql端口号以及连接到远程Mysql数据库
一 前言当前使用phpmyadmin版本号为phpMyAdmin- 4.9.11。mysql默认端口3306,如果你当前mysql不是3306或者你想远程连接类似aiven这种远程mysql数据库,则如何通过phpmyadmin连接呢?网上文章都是要修改phpmyadmin目录下libraries下配置文件config.default.php文件的i]['port'] = ''参数,但是修改后并没有什么用,不知道是我phpmyadmin版本的问题还是方法的问题。二 正确方法在phpmyadmin目录下1 编辑phpmyadmin目录下的config.inc.phpvim /home/wwwroot/default/phpmyadmin/config.inc.php2编辑config.inc.php文件找到$cfg['Servers'][$i]['host']的位置/* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Server parameters */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Select mysql if your server does not have mysqli */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['AllowNoPassword'] = false;3更改端口号更改$cfg['Servers'][$i]['host']的值为localhost:3307,此处3307为你的mysql端口号,此时打开phpmyadmin默认就是连接mysql3307的端口了,至此教程结束。$cfg['Servers'][$i]['host'] = 'localhost:3307';如果你还需要连接aiven这种远程Mysql数据库,请看第4步。4 替换为aiven等远程Mysql数据库如果你想使用远程Mysql数据库,比如aiven提供的免费Mysql数据库,只需要将$cfg['Servers'][$i]['host'] 的值改为Aiven后台提供的远程地址即可,记得要把端口号及后面的代码都写完整。$cfg['Servers'][$i]['host'] = 'mysql-umami-betanet-test.k.aivencloud.com:27546/defaultdb?ssl-mode=REQUIRED';
2025年03月23日
373 阅读
1 评论
0 点赞
2025-03-21
让Mysql数据备份变得简单,巧用mysqldump数据导入导出功能
一 前言在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具;它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有的参数详细说明列出来。二 语法默认不带参数的导出,导出文本内容大概如下:创建数据库判断语句-删除表-创建表-锁表-禁用索引-插入数据-启用索引-解锁表。Usage: mysqldump [OPTIONS] database [tables]OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]OR mysqldump [OPTIONS] --all-databases [OPTIONS]插入测试数据复制代码CREATE DATABASE db1 DEFAULT CHARSET utf8;USE db1;CREATE TABLE a1(id int);insert into a1() values(1),(2);CREATE TABLE a2(id int);insert into a2() values(2);CREATE TABLE a3(id int);insert into a3() values(3);CREATE DATABASE db2 DEFAULT CHARSET utf8;USE db2;CREATE TABLE b1(id int);insert into b1() values(1);CREATE TABLE b2(id int);insert into b2() values(2);复制代码三 实操教程1.导出所有数据库该命令会导出包括系统数据库在内的所有数据库mysqldump -uroot -proot --all-databases >/tmp/all.sql2.导出db1、db2两个数据库的所有数据mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql3.导出db1中的a1、a2表注意导出指定表只能针对一个数据库进行导出,且导出的内容中和导出数据库也不一样,导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据mysqldump -uroot -proot --databases db1 --tables a1 a2 >/tmp/db1.sql4.条件导出,导出db1表a1中id=1的数据如果多个表的条件相同可以一次性导出多个表字段是整形mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1' >/tmp/a1.sql字段是字符串,并且导出的sql中不包含drop table,create tablemysqldump -uroot -proot --no-create-info --databases db1 --tables a1 --where="id='a'" >/tmp/a1.sql5.生成新的binlog文件,-F有时候会希望导出数据之后生成一个新的binlog文件,只需要加上-F参数即可mysqldump -uroot -proot --databases db1 -F >/tmp/db1.sql6.只导出表结构不导出数据,--no-datamysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql7.跨服务器导出导入数据mysqldump --host=h1 -uroot -proot --databases db1 |mysql --host=h2 -uroot -proot db2将h1服务器中的db1数据库的所有数据导入到h2中的db2数据库中,db2的数据库必须存在否则会报错mysqldump --host=192.168.80.137 -uroot -proot -C --databases test |mysql --host=192.168.80.133 -uroot -proot test 加上-C参数可以启用压缩传递。8.将主库的binlog位置和文件名追加到导出数据的文件中,--dump-slave注意:--dump-slave命令如果当前服务器是从服务器那么使用该命令会执行stop slave来获取master binlog的文件和位置,等备份完后会自动执行start slave启动从服务器。但是如果是大的数据量备份会给从和主的延时变的更大,使用--dump-slave获取到的只是当前的从服务器的数据执行到的主的binglog的位置是(relay_mater_log_file,exec_master_log_pos),而不是主服务器当前的binlog执行的位置,主要是取决于主从的数据延时。该参数在在从服务器上执行,相当于执行show slave status。当设置为1时,将会以CHANGE MASTER命令输出到数据文件;设置为2时,会在change前加上注释。该选项将会打开--lock-all-tables,除非--single-transaction被指定。在执行完后会自动关闭--lock-tables选项。--dump-slave默认是1mysqldump -uroot -proot --dump-slave=1 --databases db1 >/tmp/db1.sqlmysqldump -uroot -proot --dump-slave=2 --database db1 >/tmp/db1.sql9.将当前服务器的binlog的位置和文件名追加到输出文件,--master-data该参数和--dump-slave方法一样,只是它是记录的是当前服务器的binlog,相当于执行show master status,状态(file,position)的值。注意:--master-data不会停止当前服务器的主从服务10.--opt等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 该选项默认开启, 可以用--skip-opt禁用.mysqldump -uroot -p --host=localhost --all-databases --opt11.保证导出的一致性状态--single-transaction该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎(它不显示加锁通过判断版本来对比数据),仅InnoDB。本选项和--lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick 选项。--quick, -q不缓冲查询,直接导出到标准输出。默认为打开状态,使用--skip-quick取消该选项。12.--lock-tables, -l开始导出前,锁定所有表。用READ LOCAL锁定表以允许MyISAM表并行插入。对于支持事务的表例如InnoDB和BDB,--single-transaction是一个更好的选择,因为它根本不需要锁定表。请注意当导出多个数据库时,--lock-tables分别为每个数据库锁定表。因此,该选项不能保证导出文件中的表在数据库之间的逻辑一致性。不同数据库表的导出状态可以完全不同。13.导出存储过程和自定义函数--routines, -Rmysqldump -uroot -p --host=localhost --all-databases --routines14.压缩备份压缩备份mysqldump -uroot -p -P3306 -q -Q --set-gtid-purged=OFF --default-character-set=utf8 --hex-blob --skip-lock-tables --databases abc 2>/abc.err |gzip >/abc.sql.gz还原gunzip -c abc.sql.gz |mysql -uroot -p -vvv -P3306 --default-character-set=utf8 abc 1> abc.log 2>abc.err备注: 线上环境导出和导入数据可以参考“14.压缩备份”的导出和导入参数。15 其它常用选项:复制代码--no-create-db, ---取消创建数据库sql(默认存在)--no-create-info,---取消创建表sql(默认存在)--no-data ---不导出数据(默认导出)--add-drop-database ---增加删除数据库sql(默认不存在)--skip-add-drop-table ---取消每个数据表创建之前添加drop数据表语句(默认每个表之前存在drop语句)--skip-add-locks ---取消在每个表导出之前增加LOCK TABLES(默认存在锁)--skip-comments ---注释信息(默认存在)复制代码四 参数说明:复制代码--all-databases , -A导出全部数据库。mysqldump -uroot -p --all-databases--all-tablespaces , -Y导出全部表空间。mysqldump -uroot -p --all-databases --all-tablespaces--no-tablespaces , -y不导出任何表空间信息。mysqldump -uroot -p --all-databases --no-tablespaces--add-drop-database每个数据库创建之前添加drop数据库语句。mysqldump -uroot -p --all-databases --add-drop-database--add-drop-table每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)mysqldump -uroot -p --all-databases (默认添加drop语句)mysqldump -uroot -p --all-databases –skip-add-drop-table (取消drop语句)--add-locks在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(默认为打开状态,使用--skip-add-locks取消选项)mysqldump -uroot -p --all-databases (默认添加LOCK语句)mysqldump -uroot -p --all-databases –skip-add-locks (取消LOCK语句)--allow-keywords允许创建是关键词的列名字。这由表名前缀于每个列名做到。mysqldump -uroot -p --all-databases --allow-keywords--apply-slave-statements在'CHANGE MASTER'前添加'STOP SLAVE',并且在导出的最后添加'START SLAVE'。mysqldump -uroot -p --all-databases --apply-slave-statements--character-sets-dir字符集文件的目录mysqldump -uroot -p --all-databases --character-sets-dir=/usr/local/mysql/share/mysql/charsets--comments附加注释信息。默认为打开,可以用--skip-comments取消mysqldump -uroot -p --all-databases (默认记录注释)mysqldump -uroot -p --all-databases --skip-comments (取消注释)--compatible导出的数据将和其它数据库或旧版本的MySQL 相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等,要使用几个值,用逗号将它们隔开。它并不保证能完全兼容,而是尽量兼容。mysqldump -uroot -p --all-databases --compatible=ansi--compact导出更少的输出信息(用于调试)。去掉注释和头尾等结构。可以使用选项:--skip-add-drop-table --skip-add-locks --skip-comments --skip-disable-keysmysqldump -uroot -p --all-databases --compact--complete-insert, -c使用完整的insert语句(包含列名称)。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。mysqldump -uroot -p --all-databases --complete-insert--compress, -C在客户端和服务器之间启用压缩传递所有信息mysqldump -uroot -p --all-databases --compress--create-options, -a在CREATE TABLE语句中包括所有MySQL特性选项。(默认为打开状态)mysqldump -uroot -p --all-databases--databases, -B导出几个数据库。参数后面所有名字参量都被看作数据库名。mysqldump -uroot -p --databases test mysql--debug输出debug信息,用于调试。默认值为:d:t,/tmp/mysqldump.tracemysqldump -uroot -p --all-databases --debugmysqldump -uroot -p --all-databases --debug=” d:t,/tmp/debug.trace”--debug-check检查内存和打开文件使用说明并退出。mysqldump -uroot -p --all-databases --debug-check--debug-info输出调试信息并退出mysqldump -uroot -p --all-databases --debug-info--default-character-set设置默认字符集,默认值为utf8mysqldump -uroot -p --all-databases --default-character-set=utf8--delayed-insert采用延时插入方式(INSERT DELAYED)导出数据mysqldump -uroot -p --all-databases --delayed-insert--delete-master-logsmaster备份后删除日志. 这个参数将自动激活--master-data。mysqldump -uroot -p --all-databases --delete-master-logs--disable-keys对于每个表,用/!40000 ALTER TABLE tbl_name DISABLE KEYS /;和/!40000 ALTER TABLE tbl_name ENABLE KEYS /;语句引用INSERT语句。这样可以更快地导入dump出来的文件,因为它是在插入所有行后创建索引的。该选项只适合MyISAM表,默认为打开状态。mysqldump -uroot -p --all-databases --dump-slave该选项将主的binlog位置和文件名追加到导出数据的文件中(show slave status)。设置为1时,将会以CHANGE MASTER命令输出到数据文件;设置为2时,会在change前加上注释。该选项将会打开--lock-all-tables,除非--single-transaction被指定。该选项会自动关闭--lock-tables选项。默认值为0。mysqldump -uroot -p --all-databases --dump-slave=1mysqldump -uroot -p --all-databases --dump-slave=2--master-data该选项将当前服务器的binlog的位置和文件名追加到输出文件中(show master status)。如果为1,将会输出CHANGE MASTER 命令;如果为2,输出的CHANGE MASTER命令前添加注释信息。该选项将打开--lock-all-tables 选项,除非--single-transaction也被指定(在这种情况下,全局读锁在开始导出时获得很短的时间;其他内容参考下面的--single-transaction选项)。该选项自动关闭--lock-tables选项。mysqldump -uroot -p --host=localhost --all-databases --master-data=1;mysqldump -uroot -p --host=localhost --all-databases --master-data=2;--events, -E导出事件。mysqldump -uroot -p --all-databases --events--extended-insert, -e使用具有多个VALUES列的INSERT语法。这样使导出文件更小,并加速导入时的速度。默认为打开状态,使用--skip-extended-insert取消选项。mysqldump -uroot -p --all-databasesmysqldump -uroot -p --all-databases--skip-extended-insert (取消选项)--fields-terminated-by导出文件中忽略给定字段。与--tab选项一起使用,不能用于--databases和--all-databases选项mysqldump -uroot -p test test --tab=”/home/mysql” --fields-terminated-by=”#”--fields-enclosed-by输出文件中的各个字段用给定字符包裹。与--tab选项一起使用,不能用于--databases和--all-databases选项mysqldump -uroot -p test test --tab=”/home/mysql” --fields-enclosed-by=”#”--fields-optionally-enclosed-by输出文件中的各个字段用给定字符选择性包裹。与--tab选项一起使用,不能用于--databases和--all-databases选项mysqldump -uroot -p test test --tab=”/home/mysql” --fields-enclosed-by=”#” --fields-optionally-enclosed-by =”#”--fields-escaped-by输出文件中的各个字段忽略给定字符。与--tab选项一起使用,不能用于--databases和--all-databases选项mysqldump -uroot -p mysql user --tab=”/home/mysql” --fields-escaped-by=”#”--flush-logs开始导出之前刷新日志。请注意:假如一次导出多个数据库(使用选项--databases或者--all-databases),将会逐个数据库刷新日志。除使用--lock-all-tables或者--master-data外。在这种情况下,日志将会被刷新一次,相应的所以表同时被锁定。因此,如果打算同时导出和刷新日志应该使用--lock-all-tables 或者--master-data 和--flush-logs。mysqldump -uroot -p --all-databases --flush-logs--flush-privileges在导出mysql数据库之后,发出一条FLUSH PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候。mysqldump -uroot -p --all-databases --flush-privileges--force在导出过程中忽略出现的SQL错误。mysqldump -uroot -p --all-databases --force--help显示帮助信息并退出。mysqldump --help--hex-blob使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用该选项。影响到的字段类型有BINARY、VARBINARY、BLOB。mysqldump -uroot -p --all-databases --hex-blob--host, -h需要导出的主机信息mysqldump -uroot -p --host=localhost --all-databases--ignore-table不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……mysqldump -uroot -p --host=localhost --all-databases --ignore-table=mysql.user--include-master-host-port在--dump-slave产生的'CHANGE MASTER TO..'语句中增加'MASTER_HOST=,MASTER_PORT=' mysqldump -uroot -p --host=localhost --all-databases --include-master-host-port--insert-ignore在插入行时使用INSERT IGNORE语句.mysqldump -uroot -p --host=localhost --all-databases --insert-ignore--lines-terminated-by输出文件的每行用给定字符串划分。与--tab选项一起使用,不能用于--databases和--all-databases选项。mysqldump -uroot -p --host=localhost test test --tab=”/tmp/mysql” --lines-terminated-by=”##”--lock-all-tables, -x提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction 和--lock-tables 选项。mysqldump -uroot -p --host=localhost --all-databases --lock-all-tables--lock-tables, -l开始导出前,锁定所有表。用READ LOCAL锁定表以允许MyISAM表并行插入。对于支持事务的表例如InnoDB和BDB,--single-transaction是一个更好的选择,因为它根本不需要锁定表。请注意当导出多个数据库时,--lock-tables分别为每个数据库锁定表。因此,该选项不能保证导出文件中的表在数据库之间的逻辑一致性。不同数据库表的导出状态可以完全不同。mysqldump -uroot -p --host=localhost --all-databases --lock-tables--log-error附加警告和错误信息到给定文件mysqldump -uroot -p --host=localhost --all-databases --log-error=/tmp/mysqldump_error_log.err--max_allowed_packet服务器发送和接受的最大包长度。mysqldump -uroot -p --host=localhost --all-databases --max_allowed_packet=10240--net_buffer_lengthTCP/IP和socket连接的缓存大小。mysqldump -uroot -p --host=localhost --all-databases --net_buffer_length=1024--no-autocommit使用autocommit/commit 语句包裹表。mysqldump -uroot -p --host=localhost --all-databases --no-autocommit--no-create-db, -n只导出数据,而不添加CREATE DATABASE 语句。mysqldump -uroot -p --host=localhost --all-databases --no-create-db--no-create-info, -t只导出数据,而不添加CREATE TABLE 语句。mysqldump -uroot -p --host=localhost --all-databases --no-create-info--no-data, -d不导出任何数据,只导出数据库表结构。mysqldump -uroot -p --host=localhost --all-databases --no-data--no-set-names, -N等同于--skip-set-charsetmysqldump -uroot -p --host=localhost --all-databases --no-set-names--opt等同于--add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, --disable-keys 该选项默认开启, 可以用--skip-opt禁用.mysqldump -uroot -p --host=localhost --all-databases --opt--order-by-primary如果存在主键,或者第一个唯一键,对每个表的记录进行排序。在导出MyISAM表到InnoDB表时有效,但会使得导出工作花费很长时间。 mysqldump -uroot -p --host=localhost --all-databases --order-by-primary--password, -p连接数据库密码--pipe(windows系统可用)使用命名管道连接mysqlmysqldump -uroot -p --host=localhost --all-databases --pipe--port, -P连接数据库端口号--protocol使用的连接协议,包括:tcp, socket, pipe, memory.mysqldump -uroot -p --host=localhost --all-databases --protocol=tcp--quick, -q不缓冲查询,直接导出到标准输出。默认为打开状态,使用--skip-quick取消该选项。mysqldump -uroot -p --host=localhost --all-databases mysqldump -uroot -p --host=localhost --all-databases --skip-quick--quote-names,-Q使用(`)引起表和列名。默认为打开状态,使用--skip-quote-names取消该选项。mysqldump -uroot -p --host=localhost --all-databasesmysqldump -uroot -p --host=localhost --all-databases --skip-quote-names--replace使用REPLACE INTO 取代INSERT INTO.mysqldump -uroot -p --host=localhost --all-databases --replace--result-file, -r直接输出到指定文件中。该选项应该用在使用回车换行对(\r\n)换行的系统上(例如:DOS,Windows)。该选项确保只有一行被使用。mysqldump -uroot -p --host=localhost --all-databases --result-file=/tmp/mysqldump_result_file.txt--routines, -R导出存储过程以及自定义函数。mysqldump -uroot -p --host=localhost --all-databases --routines--set-charset添加'SET NAMES default_character_set'到输出文件。默认为打开状态,使用--skip-set-charset关闭选项。mysqldump -uroot -p --host=localhost --all-databases mysqldump -uroot -p --host=localhost --all-databases --skip-set-charset--single-transaction该选项在导出数据之前提交一个BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎,仅InnoDB。本选项和--lock-tables 选项是互斥的,因为LOCK TABLES 会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用--quick 选项。mysqldump -uroot -p --host=localhost --all-databases --single-transaction--dump-date将导出时间添加到输出文件中。默认为打开状态,使用--skip-dump-date关闭选项。mysqldump -uroot -p --host=localhost --all-databasesmysqldump -uroot -p --host=localhost --all-databases --skip-dump-date--skip-opt禁用–opt选项.mysqldump -uroot -p --host=localhost --all-databases --skip-opt--socket,-S指定连接mysql的socket文件位置,默认路径/tmp/mysql.sockmysqldump -uroot -p --host=localhost --all-databases --socket=/tmp/mysqld.sock--tab,-T为每个表在给定路径创建tab分割的文本文件。注意:仅仅用于mysqldump和mysqld服务器运行在相同机器上。注意使用--tab不能指定--databases参数mysqldump -uroot -p --host=localhost test test --tab="/home/mysql"--tables覆盖--databases (-B)参数,指定需要导出的表名,在后面的版本会使用table取代tables。mysqldump -uroot -p --host=localhost --databases test --tables test--triggers导出触发器。该选项默认启用,用--skip-triggers禁用它。mysqldump -uroot -p --host=localhost --all-databases --triggers--tz-utc在导出顶部设置时区TIME_ZONE='+00:00' ,以保证在不同时区导出的TIMESTAMP 数据或者数据被移动其他时区时的正确性。mysqldump -uroot -p --host=localhost --all-databases --tz-utc--user, -u指定连接的用户名。--verbose, --v输出多种平台信息。--version, -V输出mysqldump版本信息并退出--where, -w只转储给定的WHERE条件选择的记录。请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来。mysqldump -uroot -p --host=localhost --all-databases --where=” user=’root’”--xml, -X导出XML格式.mysqldump -uroot -p --host=localhost --all-databases --xml--plugin_dir客户端插件的目录,用于兼容不同的插件版本。mysqldump -uroot -p --host=localhost --all-databases --plugin_dir=”/usr/local/lib/plugin”--default_auth客户端插件默认使用权限。mysqldump -uroot -p --host=localhost --all-databases --default-auth=”/usr/local/lib/plugin/”复制代码五 错误处理1.unknown option '--no-beep'第一种方法:删除my.ini[client]下的 no-beep 参数;第二种方法:在 mysqldump 后加--no-defaults参数 。六 总结文章中列举了一些常用的导出操作,还有很多其它的参数也会经常用到,包括“--add-drop-database”,“--apply-slave-statements”,“--triggers”等。客户端的导入导出功能也是不错的选择,比如workbench、navicat;其中navicat的导出向导中可以有很多文件格式可以选择。--tab的快速导出导入数据是个不错的方法,它会在指定的目录下生成一个sql表结构文件和一个text数据文件
2025年03月21日
196 阅读
0 评论
0 点赞
2025-03-21
Aiven提供适用于国外的5GB的免费Mysql大容量数据库申请
前言Aiven的免费计划提供多种数据库选择,服务器在加州,配置为1C1G5G,足够多数网站使用了,适合在国外的网站使用,国内连接可能存在不稳定的情况。澳大利亚开源云数据平台 Aiven 宣布了其开源数据库服务 Aiven for PostgreSQL、Aiven for MySQL 和 Aiven for Redis 的免费计划。通过新推出的社区论坛获得技术支持的任何人都可以使用这些免费计划。关于免费MYsql服务,之前本站有过介绍:1.学习测试可用的免费的mysql云数据库,可以远程连接2.白嫖mysql云数据库——来自中国大陆的免费的在线MySQL云数据库SqlpubAiven 是做什么的?Aiven 使得建立云数据库变得如此简单,以至于任何人都可以做到。Aiven的一键式解决方案消除了云数据基础设施的烦恼。一切都在一处:您所需的所有云提供商和工具都集中在一处。完全托管:在 10 分钟内创建功能齐全、完全托管的数据基础架构。保持控制:使用强大的开源服务控制您的数据。完成工作所需的一切:Aiven 的一体化云数据平台结合了所有连接到您使用的数据服务所需的工具,支持所有主要的云服务提供商。申请及使用教程1 打开官网https://www.aiven.io2 选择注册方式并完成注册3 填写数据库名称4 登录后台获取最终的mysql信息
2025年03月21日
270 阅读
0 评论
0 点赞
2025-03-21
学习测试可用的免费的mysql云数据库,可以远程连接
前言本站之前介绍过Sqlpub提供的免费数据库:白嫖mysql云数据库——来自中国大陆的免费的在线MySQL云数据库Sqlpub。关于Sqlpub提供的免费数据库的主要信息如下:是中国境内基于阿里云杭州的MySQL数据库,当前数据库版本为:MySQL 8.4.3 ,你甚至可以申请开发版(开发版每年需要9.9元,已经很便宜了)。作为难得的国内免费MySQL数据库,sqlpub最大支持36000次/小时的请求、同时30个连接和500M存储空间,这个容量和连接已经足够一般的小站使用了。在学习数据库的时候,是不是感觉烦于没有云数据库可以学习远程连接,或者搭建数据库环境太过于麻烦,不想搭建。那么你可以试一试这几个免费的云数据库。其他免费Mysql数据库当然,由于是免费的,在储存容量和连接数上都有限制,也不适合商用。1.db4freedb4free.net - 免费的 MySQL 数据库https://db4free.net/mysql数据库,基本最新版本,服务器在国外,可能比较慢但是是稳定的。无需注册账号,不定时清空超过200MB的资料库。2.sqlpubSQLPub - 免费的MySQL数据库申请地址:https://sqlpub.com/mysql数据库,基本最新版本,服务器在国内。无需注册账号,最大36000次/小时的请求、同时10个连接和500M存储空间。3. aiven申请地址:https://go.aiven.io/机器性能好,速度快,服务器是加州的digital ocean5G以内的数据库,可以新增数据库不足之处是连接启用了ssl,需要在应用端部署证书4.memfireMemFireDB申请地址:https://cloud.memfiredb.com/只支持PostgreSQL,不支持mysql,服务器在国内。需要注册账号,每个账号限一个。5.freesqldatabase申请地址:https://www.freesqldatabase.com/可选亚太地区,速度还行1个5MB的数据库,容量太小。不能新增数据库注册后通过邮件发送数据库密码但为了保持免费数据库帐户有效,要求每周点击链接,避免删除不再需要的数据库。这些免费Mysql数据库,让我们可以方便的进行学习和测试,也可以作为小站使用,但生产环境不建议使用,毕竟生产环境需要稳定。请大家珍惜互联网上的免费资源。
2025年03月21日
671 阅读
1 评论
0 点赞
2025-03-20
白嫖mysql云数据库——来自中国大陆的免费的在线MySQL云数据库Sqlpub
前言Sqlpub是中国境内基于阿里云杭州的MySQL数据库,当前数据库版本为:MySQL 8.4.3 ,你甚至可以申请开发版(开发版每年需要9.9元,已经很便宜了)。作为难得的国内免费MySQL数据库,sqlpub最大支持36000次/小时的请求、同时30个连接和500M存储空间,这个容量和连接已经足够一般的小站使用了。官方简介如下:SQLPub免费的MySQL数据库,提供最新版本、甚至是开发者版本的 MySQL 服务器测试服务。 您可以轻易地 注册免费账号 测试您的应用。例如,您可以测试在MySQL版本升级后您的应用是否依然能够正常运行。 sqlpub.com 也是让您学习并熟悉新版本功能及操作的极佳资源。您将获得最大36000次/小时的请求、同时10个连接和500M存储空间。严禁用于非法用途 (传播暴力、淫秽色情信息等),发现永久禁用。申请教程网站功能很简单,打开首页就是注册页面,填写完数据库名称和用户名以及邮箱之后,获取邮箱验证码就可以直接开通数据库。1 打开首页打开官网2 注册信息填写填写完数据库名称和用户名以及邮箱之后,获取邮箱验证码就可以直接开通数据库。3 目前开通的数据库形式webmysql登录地址: https://client.sqlpub.com/user/login mysql服务器地址:mysql2.sqlpub.com mysql服务端口号:3307 数据库名:vvars(注册时填写的数据库名) 用户名:vvars(注册时填写的用户名) 密码:vvars.com(注册时填写的用户名)4 注意事项作为国内难得的数据库,有这样的服务已经非常不容易了,作为在中国境内开发调试程序或者本地测试使用还是不错的。但是不建议在生产中使用,如果服务放在国外,直接连接国内或许也不是一个好方法。
2025年03月20日
1,655 阅读
2 评论
0 点赞
2025-02-21
mysql主从同步时mysql server-id无变化(lnmp 环境)
在 Linux 系统中使用 LNMP (Linux, Nginx, MySQL/MariaDB, PHP) 架构时,如果你发现 MySQL 服务器的 server id 没有变化,这可能是由于以下几个原因导致的:1. 配置文件未正确修改MySQL 的 server id 是在其配置文件 my.cnf 或 my.ini 中设置的。通常这个设置位于 [mysqld] 部分。确保你已经正确修改了该配置文件中的 server-id 参数。例如:[mysqld] server-id = 1注意:这个地方有个坑,lnmp默认是有规定server-id = 1,如果作为从服务器的话又在前面规定了server-id = 2,这样冲突不会生效,还是现实server-id = 1,需要把后面的server-id = 1注释掉。2. 配置文件未重新加载修改了配置文件后,需要重启 MySQL 服务或者重新加载配置,以使更改生效。你可以使用以下命令之一来重新加载配置:sudo systemctl restart mysqld或者sudo service mysql restart或者仅重新加载配置(如果支持):sudo systemctl reload mysqld或者sudo service mysql reload3. 查看当前配置你可以查看当前 MySQL 的配置来确认 server-id 是否已经更改:mysql -u root -p -e "SHOW VARIABLES LIKE 'server_id';"4. 多实例配置问题如果你在同一个服务器上运行多个 MySQL 实例,确保每个实例的 server-id 是唯一的。例如,如果你有两个实例,一个使用 server-id = 1,另一个应该使用 server-id = 2 或其他不同的值。5. 检查日志文件查看 MySQL 的日志文件,看是否有关于 server-id 的错误或警告信息,这可能会给出为什么更改未生效的线索。日志文件通常位于 /var/log/mysql/ 或 /var/log/mysqld.log。6. 使用正确的用户启动 MySQL确保你以正确的用户身份启动 MySQL 服务,通常是 mysql 或 root 用户。使用错误的用户可能会导致权限问题,从而无法正确修改配置或启动服务。按照上述步骤检查和修改后,你的 MySQL 服务器的 server-id 应该能够正确设置并变化。如果问题仍然存在,可能需要更详细地检查你的系统环境或配置文件的具体内容。
2025年02月21日
110 阅读
0 评论
0 点赞
1
2