VPS最大的好处就是可以不断的折腾,就像这样,把数据库从MySQL 5.5.28迁移到了MariaDB 5.5.34。
因为军哥的lnmp一键安装包没有升级数据库的脚本,只好自己摸索着来,还好在本地搭了个同系统的虚拟机,首先在虚拟机上调试脚本,然后上传到VPS运行。
首先要备份好数据,以防万一。
#导出数据库数据,迁移时用于导入 mysqldump -uroot -p你的密码 你的数据库 > /tmp/你的文件.sql
不过这样要一个一个导出,不如用phpmyadmin全部一起方便。
#停止mysql服务 /etc/init.d/mysql stop #重命名相关文件,先别删,万一不行还可以恢复 mv /etc/inid.d/mysql /etc/init.d/mysql.old mv /etc/my.cnf /etc/my.cnf.old
虽然我的系统是CentOS,mariadb有rpm包,但本着折腾的原则,还是用源码包自己编译。。。注意需要CMAKE
wget https://downloads.mariadb.org/interstitial/mariadb-5.5.34/kvm-tarbake-jaunty-x86/mariadb-5.5.34.tar.gz/from/http://mirror.jmu.edu/pub/mariadb tar zxvf mariadb-5.5.34.tar.gz cd mariadb-5.5.34 #这些参数自己自己度娘一下什么意思 cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \ -DMYSQL_DATADIR=/usr/local/mariadb/data/ \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DMYSQL_TCP_PORT=3306 \ -DWITH_ARIA_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DWITH_XTRADB_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_READLINE=1 \ -DWITH_EXTRA_CHARSETS=all \ #据说这个很关键 -DEXTRA_CHARSETS=all #据说这个也很关键 make install
一番等待后,编译安装完成
#复制相关文件 cp support-files/mysql.server /etc/init.d/mysql #服务管理 cp support-files/my-small.cnf /usr/local/mariadb/my.cnf #默认配置 chmod +x /etc/init.d/mysql mkdir -p /usr/local/mariadb/data/ #创建数据库存储目录 mkdir -p /usr/local/mariadb/tmp/ #临时目录 chown mysql:mysql -R /usr/local/mariadb #给用来运行数据库的用户授权,这里沿用原来的 #修改配置 sed '/mysqld]/a\pid-file = /usr/local/mariadb/tmp/mariadb.pid' -i /usr/local/mariadb/my.cnf sed '/mysqld]/a\datadir = /usr/local/mariadb/data' -i /usr/local/mariadb/my.cnf sed '/mysqld]/a\basedir = /usr/local/mariadb' -i /usr/local/mariadb/my.cnf sed '/mysqld]/a\user = mysql' -i /usr/local/mariadb/my.cnf sed '/#innodb_lock_wait_timeout = 50/a\log_error = /usr/local/mariadb/data/mariadb.err' -i /usr/local/mariadb/my.cnf #初始化数据库 /usr/local/mariadb/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb --datadir=/usr/local/mariadb/data /etc/init.d/mysql start #创建目录链接,这里如果原来安装过lnmp肯定会提示文件或目录已存在,自己先移除 ln -s /usr/local/mariadb/lib /usr/lib/mysql ln -s /usr/local/mariadb/include /usr/include/mysql # 创建执行文件链接 ln -s /usr/local/mariadb/bin/mysql /usr/bin/mysql ln -s /usr/local/mariadb/bin/mysqldump /usr/bin/mysqldump ln -s /usr/local/mariadb/bin/myisamchk /usr/bin/myisamchk ln -s /usr/local/mariadb/bin/mysqld_safe /usr/bin/mysqld_safe # 管理动态链接库 ldconfig #设置root密码 /usr/local/mariadb/bin/mysqladmin -u root password 你的数据库密码 # 修改root密码 / 删除初始非 root 的用户 / 删除空密码的root # 删除test测试库 / 禁止root远程连接权限 / 刷新权限 cat > /tmp/mysql_sec_script.sql< <EOF use mysql; update user set password=password('你的数据库密码') where user='root'; delete from user where not (user='root') ; delete from user where user='root' and password=''; drop database test; DROP USER ''@'%'; flush privileges; EOF /usr/local/mariadb/bin/mysql -uroot -p你的数据库密码 -h localhost < /tmp/mysql_sec_script.sql #设置系统启动时自动启动 chkconfig --level 345 mysql on #导入之前备份的数据,注意要先创建同名空数据库 cat - 你的文件1 >> 你的文件1.new.sql >>EOF #把创建数据库的命令添加到导入文件中 CREATE DATABASE IF NOT EXISTS '你的数据库名'; USE '你的数据库名'; EOF #导入,需要导入多次。。。烦,还是phpmyadmin方便 /usr/local/mariadb/bin/mysql -uroot -p你的数据库密码 -h localhost < 你的文件绝对路径 #清理 rm -f /tmp/*.sql
登录phpmyadmin看看
测试一下,几天,一个月,确定没有问题了,再把相关文件删除
rm -f /etc/init.d/mysql.old rm -f /etc/my.cnf.old rm -Rf /usr/local/mysql
参考资料:MariaDB-5.5.33a 编译安装
作者:Mehost
发表回复