Category: MySQL

CentOS 安装 MariaDB 10.0

MariaDB 10.0.x 版是以 MariaDB 5.5 为基础, 加上移植自 MySQL 5.6 版的功能和自行开发的新功能。以下会介绍在 RHEL 及 CentOS 用 YUM 安装 MariaDB 10.0 的方法。 首先建立 MariaDB 的 YUM Repository, 建立档案 /etc/yum.repos.d/MariaDB.repo, 根据不同的系统加不相关内容: RHEL / …

Percona XtraBackup 备份 MySQL

MySQL 热备份时如果没有停止 MySQL 或者变成唯读状态, 备份档有机会出现不连贯的问题。而 Percona XtraBackup 就是一个可以在 MySQL 不停机的情况下对进行热备份的开源工具, 而且可以选择完整备份或者增量备份。除了 MySQL 外, 它也支援 MariaDB 及 Percona Server。 由于 Percona XtraBackup 是借用 transaction log 进行备份, 所以热备份只适用于 InnoDB 的数据库, 如果数据库使用 …

MySQL 设定 Master-Slave Replication 同步

MySQL 的 Master-Slave Replication (同步) 是当 Master 数据库有变动时, 自动同步到 Slave 数据库。由于 MariaDB 在 RHEL/CentOS 7 开始已经成为默认数据库, 而且可以完全取代 MySQL, 所以以下也会以 MariaDB 进行设定, 但同样方法在 MySQL 一样可以的。 假设已经有两台 MySQL 服务器, 以下两部份分别是 Master …

mysqldump 报错 Got error: 145

当用 mysqldump 备份 MySQL 或 MariaDB 数据库时, 如果出现类似以下报错: mysqldump: Got error: 145: Table ‘’ is marked as crashed and should be repaired when using LOCK TABLES 出现这个错误, 是资料表出现损坏, 可以尝试用 …

MySQL 语法 – INSERT … ON DUPLICATE KEY UPDATE

有时在 MySQL 新增资料时, 会先判断资料是否存在, 如果资料不存在会执行 INSERT 语句, 如果资料存在则用 UPDATE 语句。以前要这样做, 需要先用 SELECT 判断, 就像这样: 虽然可以完成上面提到的任务, 但写程式时就会较麻烦, MySQL 提供了 INSERT … ON DUPLICATE KEY UPDATE 语句, 可以一行就完成, 无需用 IF 及 …

同时运行多个 MySQL

有时需要在不同 MySQL 版本间做测试, 如果要在服务器内重启 MySQL 切换版本做测试会很麻烦, 以下纪录一下在服务器内安装两个 MySQL 同时运行, 当然如果有需要, 也可以按此方法安装 2 个以上的 MySQL。 以下假设第一个 MySQL Server 已经正常运作, 下面全是安装第二个 MySQL Server 的步骤: 1. 建立 MySQL 数据库目录: # mkdir /var/lib/mysql2 …

变更 MySQL 默认埠号

MySQL 的默认埠号是 3306, 要变更埠号可以有很多原因, 例如基于安全考量或者同时安全两个 MySQL Server 等, 以下是变更埠号的方法: 1. 开启 my.cnf 档案, Redhat 及 CentOS 开 /etc/my.cnf, Debian 放在 /etc/mysql/my.cnf。 加入以下这行到 段落, 如果已经有 port 的选项, 直接修改便可以, 下面会将埠号改为 3307: …

MySQL 找出重复资料

MySQL 数据库出现重复资料时, 找出重复资料的方法有很多, 以下介绍两种常用的方法: 找出重复的纪录, 以 cid 字段作为判断, 会输出 cutomer_id 及出现次数: SELECT cid, COUNT(*) FROM customer GROUP BY cid HAVING COUNT(*) > 1 不是显示出现次数, 而是将重复的资料全部输出: select * from customer …