启动 mysql:8.* 效果很好,但 mysql:5.7.* 会导致立即 100% 内存消耗,尝试通过以下方法解决。
- 编辑
/lib/systemd/system/containerd.service
,修改LimitNOFILE=infinity
为LimitNOFILE=1048576
- sudo systemctl daemon-reload
- sudo systemctl restart containerd.service
再尝试启动 mysql 容器。
启动 mysql:8.* 效果很好,但 mysql:5.7.* 会导致立即 100% 内存消耗,尝试通过以下方法解决。
/lib/systemd/system/containerd.service
,修改 LimitNOFILE=infinity
为 LimitNOFILE=1048576
再尝试启动 mysql 容器。
mysql 连接时出现 SQLSTATE[HY000] [2002] No such file or directory
错误,解决办法:将连接时使用的 localhost
改为 127.0.0.1
即可。
当前方法适用于 ubuntu 16.04
my.ini
[mysqld]
中的 max_connections
但是这样修改后默认最大是214,所以还要继续修改。
[Err] 1055 – Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘information_schema.PROFILING.SEQ’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
1、查看 sql_mode
select @@global.sql_mode;
2、查出来的值
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
3、去掉 ONLY_FULL_GROUP_BY
,重新设置值
set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
4、修改 my.cnf
,添加以下行
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
设置的值和第3步的值一样,该操作要重启 mysql 服务。
判断可能是内存不够,杀死了 mysqld 进程。
运行下面的命令:
dd if=/dev/zero of=/swapfile bs=1M count=1024
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
准备两台服务器,都安装 mysql 服务器。主服务器称为 master
, 从服务器称为 slave
。前提要设置好防火墙,保证网络通畅。
配置 my.cnf
:
[mysqld]
#bind-address = 127.0.0.1 注释掉
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
relay_log = /var/log/mysql/mysql-relay-bin.log
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum localinstall mysql57-community-release-el7-8.noarch.rpm
mysql-community-server
可以修改
/etc/yum.repos.d/mysql-community.repo
源,改变默认安装的mysql版本。比如要安装5.6版本,将5.7源的enabled=1
改成enabled=0
。然后再将5.6源的enabled=0
改成enabled=1
即可。
CentOS 7下mysql下替换成MariaDB了。
把以下内容放到 /etc/yum.repos.d/MariaDB.repo
文件中
# MariaDB 10.4 CentOS repository list - created 2019-11-27 06:40 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
安装
yum install mariadb mariadb-server
systemctl start mariadb #启动mariadb
systemctl enable mariadb #设置开机自启动
mysql_secure_installation #设置root密码等相关
mysql -uroot -p #测试登录
在使用 phpmyadmin 管理 mysql 时,出现 phpmyadmin.pma_table_uiprefs doesn't exist
,快速解决办法如下:
locate create_tables.sql
./usr/share/doc/phpmyadmin/examples/create_tables.sql.gz
using phpMyAdmin./etc/phpmyadmin/config.inc.php
and edit lines 81-92: change pma_bookmark
to pma__bookmark
and so on.sudo apt-get purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /var/log/mysql
sudo rm -rf /var/log/mysql.*
sudo rm -rf /var/lib/mysql
sudo apt-get install mysql-server --fix-missing --fix-broken