因为考虑使用mariadb的集群,尝试将centos服务器中的mysql转换为 mariadb,小记一下:
1、因为服务器数据是已经运行的系统,数据量比较大,希望能直接进行数据迁移而无需进行导入导出,也不想修改现有数据表---- 当然最好是备份一下数据,尤其是innodb数据表的数据!
注:mariadb是可以无缝升级mysql并确保相关系统兼容性的,因为mariadb现在才应该是真正的mysql了
2、在服务器配置yum源(对centos6环境):
vi /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
3、直接安装:
yum install MariaDB-server MariaDB-client
4、安装中会提示会替换升级原有的 mysql相关包,于是继续…
但安装中,却提示 mysql-server无法被替换… 其他的包安装成功
5、自己干掉MySQL-server,再来:
yum remove mysql-server
yum install MariaDB-server
=====成功…
6、启动服务问题:
想修改mysql的数据存储位置,于是修改配置文件:
[server]
socket=/opt/mysql/mysql.sock
datadir=/opt/mysql
启动时报错:
InnoDB: The Auto-extending innodb_system data file ‘./ibdata1’ is of a different size 640 pages
于是 在server.cnf加上 innodb的设置:
[server]
socket=/opt/mysql/mysql.sock
datadir=/opt/mysql
innodb_data_file_path = ibdata1:10M:autoextend
再次报错,系统表缺失,于是
执行mysql到mariadb的升级:
mysql_upgrade --socket=/opt/mysql/mysql.sock -uroot -p
修改数据库路径后php报找不到mysql的socket!
这就需要修改php.ini中mysql socket的路径!
总结一下:
- 先删除原来安装的服务端mysql-server(其他部分会在安装mariadb时自动被替换)!
- 安装好mariadb的server和client端
- 修改配置文件,让数据库程序能读取到原来的数据文件
- 运行mysql_upgrade,这样才能实现数据库文件的更新!