-
-
Save sxfmol/e83551c378ce0775bebaeff9071de479 to your computer and use it in GitHub Desktop.
安装MySQL | |
首先,你需要安装MySQL。在Debian上安装MySQL非常简单。只需执行以下命令即可: | |
sudo apt-get update | |
sudo apt-get install default-mysql-server | |
在安装过程中,你将被要求设置MySQL的root用户密码。记住这个密码,因为稍后可能需要用到它。 | |
#数据库删除 | |
sudo apt-get remove mariadb-server mariadb-client mariadb-common | |
sudo apt-get remove --purge mariadb-server mariadb-client mariadb-common | |
#用户权限 | |
FLUSH PRIVILEGES; | |
#数据库重启 | |
sudo systemctl restart mysql | |
检查MySQL服务是否在运行 | |
在设置MySQL自启动之前,你需要检查MySQL服务是否正在运行。要检查MySQL服务的状态,请运行以下命令: | |
$ sudo systemctl status mysql | |
如果MySQL服务正在运行,你将看到类似以下内容的输出: | |
● mysql.service - MySQL Community Server | |
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) | |
Active: active (running) since Mon 2021-09-20 16:50:38 UTC; 2 days ago | |
Main PID: 1662 (mysqld) | |
Tasks: 31 (limit: 2344) | |
Memory: 236.4M | |
CGroup: /system.slice/mysql.service | |
└─1662 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid | |
如果MySQL服务未启动,则输出可能会显示“inactive”或“failed”。如果这是你的情况,请运行以下命令启动MySQL服务: | |
$ sudo systemctl start mysql | |
设置MySQL开机启动 | |
要设置MySQL开机启动,在命令行输入以下命令: | |
$ sudo systemctl enable mysql | |
这将使用systemd启动管理器将MySQL添加到开机自启动程序列表中。 | |
重启系统,检查MySQL是否自启动 | |
现在,你可以通过重启系统来测试MySQL是否自启动。在重启系统后,运行以下命令检查MySQL服务的状态: | |
$ sudo systemctl status mysql | |
清理空间 | |
https://www.vultr.com/zh/docs/block-storage/ | |
https://my.vultr.com/blockstorage/subs/detail/?id=f59d13bc-ebf4-4975-a9bc-3ae194bec323#overview | |
Mount block storage: | |
# mkdir /mnt/blockstorage | |
# echo >> /etc/fstab | |
# echo /dev/vdb1 /mnt/blockstorage ext4 defaults,noatime,nofail 0 0 >> /etc/fstab | |
# mount /mnt/blockstorage | |
挂载后的文件 | |
/dev/vdb1 | |
数据迁移:系统盘—>数据盘 | |
不用改配置,实现MySQL数据库迁移 | |
* 停止MySQL服务 | |
service mysqld stop | |
* 移动mysql目录至新挂载的数据盘目录 | |
mv /var/lib/mysql /mnt/blockstorage | |
* 建立软连接,将新的mysql目录链接至/var/lib | |
ln -s /mnt/blockstorage/mysql /var/lib | |
* 重启MySQL服务 | |
service mysqld start | |
数据库备份 | |
https://www.vultr.com/de/docs/backing-up-mysql-databases/ | |
Locate the Data Directory | |
Log in to MySQL server with your root password. | |
$ sudo mysql -u root -p | |
The following SQL will reveal the data directory of your MySQL instance. | |
mysql> select @@datadir; | |
The output is similar to this. | |
+-----------------+ | |
| @@datadir | | |
+-----------------+ | |
| /var/lib/mysql/ | | |
+-----------------+ | |
1 row in set (0.00 sec) | |
Alternate method | |
Locate the MySQL data path without logging to the MySQL server. | |
$ sudo mysqld --verbose --help | grep ^datadir | |
The output is similar to this. | |
datadir /var/lib/mysql/ | |
Backup the Database | |
Stop the MySQL service. | |
$ sudo systemctl stop mysql | |
Create a directory to store the MySQL file backup. Create a parent directory and sub-directories with the current date. This naming scheme allows you to determine the last backup date. | |
$ sudo mkdir -p /var/mysql_backups/2020_07_13_backup | |
Copy the database file with cp. | |
$ sudo cp -R /var/lib/mysql/. /var/mysql_backups/2020_07_13_backup | |
Start the database server. | |
$ sudo systemctl start mysql | |
Restore the Database | |
Stop the MySQL service. | |
$ sudo systemctl stop mysql | |
Rename the current MySQL data directory. This step preserves a backup copy of the current state. | |
$ sudo mv /var/lib/mysql /var/lib/mysql_old | |
Create a new MySQL data directory. | |
$ sudo mkdir /var/lib/mysql | |
Restore the MySQL backup. | |
$ sudo cp -R /var/mysql_backups/2020_07_13_backup/. /var/lib/mysql | |
Change the ownership of /var/lib/mysql to the mysql user. | |
$ sudo chown -R mysql:mysql /var/lib/mysql | |
Start the database server. | |
$ sudo systemctl start mysql | |
Test the Backup | |
Test the backup by logging to the MySQL server as root. | |
$ sudo mysql -u root -p | |
Verify the database schema is correct. | |
mysql> SHOW DATABASES; | |
Your databases are displayed. For example: | |
+--------------------+ | |
| Database | | |
+--------------------+ | |
| information_schema | | |
| mysql | | |
| performance_schema | | |
| sys | | |
+--------------------+ | |
mysql服务器启动 | |
MySQL 运行包括两部分,一部分是服务器端程序 mysqld,另外一部分则是客户端程序 mysql。只有 mysqld 启动了,mysql 客户端才能与之连接。mysqld 的启动方式有 4 种,同样 mysql 的连接方式也有 4 种。 | |
安全模式启动 | |
mysqld_safe --defaults-file=/etc/mysql/my.cnf --user=mysql & | |
如果启动不成功,查看是否有进程启动:ps -ef|grep mysql | |
问题:[InnoDB] Unable to lock ./ibdata1 error: 11
原因:分析:
1、磁盘空间目录不足
2、ibdata1 文件被其他的进程占用
解决过程:
1、 -- 查看磁盘空间情况
df -hl
sudo du -h / | sort -rh | head -15
如2.8G /var/log
2.4G /var/log/journal/3be4d026a06242f68e287cf5a1309534
系统日志journal
2.4G /var/log/journal
清理系统日志
journalctl --vacuum-size=10M
2、 --InnoDB:
- 查看系统 mysql 相关进程
[root@mysql01 ~]# ps aux |grep mysql*
-- kill -9 杀掉
数据库表大小分析
SELECT
table_name AS Table_Name,
ROUND(((data_length + index_length)/1024/1024), 2) AS Table_Size_MB,
ROUND(((data_length)/1024/1024), 2) AS Data_Size_MB,
ROUND(((index_length)/1024/1024), 2) AS Index_Size_MB,
table_rows AS Table_Rows
FROM information_schema.tables
WHERE table_schema = 'finance'
ORDER BY (data_length + index_length) DESC;
mysql 当前进程查询
select * from information_schema.processlist;
或
show PROCESSLIST;
kill进程:
kill id;
处理进程:
什么问题 [Warning] [MY-010057] [Server] IP address '65.20.69.206' has been resolved to the host name '65.**.206.vultrusercontent.com', which resembles IPv4-address itself.
查看其他草稿
这个警告信息表明 MySQL 服务器将 IP 地址 65.206 解析为主机名 65..206.vultrusercontent.com,该主机名与 IPv4 地址本身相似。这可能导致用户混淆,因为他们可能难以区分 IP 地址和主机名。
此警告信息本身并不意味着存在任何问题。但是,您可能需要检查您的 DNS 管理员是否知道此问题,并是否正在采取措施解决。
以下是一些可能的原因:
Vultr 可能正在使用临时主机名 65.206.vultrusercontent.com 来为其客户提供内容。
MySQL 正在使用的 DNS 服务器可能将主机名 65..206.vultrusercontent.com 返回为 IP 地址 65.**.206 的 A 记录,因为该 IP 地址与 Vultr 客户关联,该客户已请求使用该主机名来提供其内容。
如果您对此警告信息感到担忧,您可以尝试清除 MySQL 缓存或重新启动 MySQL 服务器。您还可以尝试使用不同的 DNS 服务器。
总而言之,此警告信息并不意味着您的 MySQL 服务器存在任何问题。但是,您可能需要检查您的 DNS 管理员是否知道此问题,并是否正在采取措施解决。
数据库启动
开机启动文件 .bashrc 或者/etc/rc.local
#/usr/sbin/mysqld --user=root --skip-grant-tables --skip-networking &
#/usr/sbin/mysqld --user=root &
cd /root
#. superset/bin/activate
#export FLASK_APP=superset
#nohup superset run -h 0.0.0.0 -p 8088 --with-threads --reload --debugger >t.log 2>&1 &
#deactivate
解决方法:
确保 MySQL 服务器正在运行:
在命令行上检查 MySQL 服务器是否正在运行:
bash
复制代码
sudo systemctl status mysql
如果 MySQL 未运行,启动它:
bash
复制代码
sudo systemctl start mysql
如果 MySQL 没有安装,可以通过以下命令安装:
bash
复制代码
sudo apt update
sudo apt install mysql-server
检查 MySQL 套接字路径:
默认情况下,MySQL 的套接字通常位于 /var/run/mysqld/mysqld.sock。但是,有时候这个路径可能会因为配置或安装方式而不同。
确认 MySQL 的套接字路径:
bash
复制代码
sudo find / -type s -name 'mysqld.sock'
如果找到不同路径的套接字文件,请更新备份脚本中的 -h 参数,指定正确的套接字路径:
bash
复制代码
mysqldump -h localhost -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_FILE
替换 -h localhost 中的 localhost 为你的 MySQL 服务器主机名或 IP 地址,或者直接使用找到的正确套接字路径。
确保用户名和密码正确:
确保在备份脚本中使用的用户名和密码正确。可以通过登录到 MySQL 来测试:
bash
复制代码
mysql -u your_username -p
输入密码后,确认能够成功登录。
检查权限问题:
确保执行备份操作的用户具有适当的权限访问 MySQL 服务器和备份目录。
避免在命令行中使用明文密码:
避免在命令行中使用明文密码是一种好的安全实践。可以考虑创建一个 .my.cnf 文件,在其中存储 MySQL 用户的密码,并确保文件权限设置为只有拥有者可以读取:
bash
复制代码
printf "[client]\nuser=%s\npassword=%s\n" "$DB_USER" "$DB_PASS" > ~/.my.cnf
chmod 600 ~/.my.cnf
然后在备份脚本中可以不再包含 -p$DB_PASS,而是直接使用 -u $DB_USER,MySQL 将自动从 .my.cnf 中读取密码。
通过这些步骤,应该能够解决 mysqldump 报错的问题,并成功执行数据库备份操作。
设置自动清楚 mysql binlog日志自动清理及手动删除
如1.1G /mnt/blockstorage/mysql/binlog.000035
root模式登陆数据库,然后操作-验证有效:
SHOW BINARY LOGS;
PURGE BINARY LOGS to 'binlog.000052';
show binary logs;
show variables like '%log%';
#设置30天自动清理
set global binlog_expire_logs_seconds = 2592000;
https://cloud.tencent.com/developer/article/1834951