前言:
今天同学们对“php排序mysql排序算法”大概比较关心,我们都想要知道一些“php排序mysql排序算法”的相关内容。那么小编同时在网络上搜集了一些关于“php排序mysql排序算法””的相关内容,希望咱们能喜欢,兄弟们快快来了解一下吧!IT行业的核心在于数据。确保数据在各种情况下的安全性,就需要我们建立健全的数据备份策略。在测试环境中,我们通过MySQL的主从架构和定时任务保障数据的安全。
MySQL主从服务器需分布于两台不同的物理机,以避免单点故障。
MySQL主服务器利用binlog实现数据同步备份至从服务器。
定时任务将从服务器的数据dump保存到NAS服务器上。
这种处理方式确保了在主服务器损毁的情况下,我们能够迅速且无缝地切换到备份服务器,同时保证数据的实时有效性。若整个集群损毁,我们依然可以通过定时任务备份的数据恢复至某一时刻。
以下是实施步骤:
在虚拟机上创建MySQL数据文件夹。编写MySQL主服务器配置文件。通过Rancher创建MySQL主服务器Deployment。编写MySQL从服务器配置文件。通过Rancher创建MySQL从服务器Deployment。部署PHPMyAdmin远程访问数据库通过定时脚本将mysql数据备份到指定目录在虚拟机上创建MySQL数据文件夹
我们最开始是将mysql的目录也通过pv挂载的。但是发现这种配置下如果设备断电等异常情况会导致mysql Binlog文件或者其他的一些数据文件损坏引起mysql无法启动。而且通过网络挂载的mysql读写效率极低。所以我们目前的方案是将mysql的数据目录直接挂载到本地文件夹上。在通过备份来保证数据安全,而且这样比起通过网络挂载还提高了mysql的执行效率。
ssh root@10.20.10.21mkdir -p /data/k8s/mysql/# mysql 的主要目录cd /data/k8s/mysql/# mysql配置文件目录mkdir etc# mysql数据目录mkdir database# mysql日志mkdir logs# mysql redologmkdir redolog# mysql undologmkdir undolog编写MySQL主服务器配置文件
[client]loose_default_character_set=utf8mb4 # 默认字符集user=root # 用户名password=${mysql_password} # MySQL密码[mysqld]server-id=1 # 服务器IDsql_mode=NO_ENGINE_SUBSTITUTION # SQL模式lower_case_table_names=1 # 表名大小写敏感设置bind_address=0.0.0.0 # 绑定地址port=3306 # 端口号autocommit=1 # 自动提交设置character_set_server=utf8mb4 # 服务器字符集skip_name_resolve=1 # 跳过域名解析max_connections=20000 # 最大连接数max_connect_errors=1000 # 最大连接错误数tmpdir=/tmp # 临时文件目录long_query_time=10 # 慢查询时间阈值slow_query_log=1 # 慢查询日志开关slow_query_log_file=/logs/slow_query.log # 慢查询日志文件路径log_error=/logs/ # 错误日志路径log_queries_not_using_indexes=1 # 记录未使用索引的查询log_slow_admin_statements=1 # 记录慢速管理语句log_slow_slave_statements=1 # 记录慢速从服务器语句log_throttle_queries_not_using_indexes=50 # 限制未使用索引查询的频率log_warnings=2 # 日志警告级别log_timestamps=system # 日志时间戳格式log_bin=master-bin # 二进制日志文件名log_bin_index=master-bin.index # 二进制日志索引文件名expire_logs_days=30 # 日志过期天数min_examined_row_limit=100 # 最小检查行限制binlog-ignore-db=mysql # 忽略的数据库(binlog)binlog-ignore-db=information_schema # 忽略的数据库(binlog)binlog-ignore-db=performance_schema # 忽略的数据库(binlog)binlog_cache_size=8M # 二进制日志缓存大小sort_buffer_size=2M # 排序缓冲区大小tmp_table_size=64M # 临时表大小max_heap_table_size=64M # 最大堆表大小table_open_cache=6140 # 表打开缓存数open_files_limit=12280 # 打开文件限制数query_cache_type=ON # 查询缓存类型query_cache_size=64M # 查询缓存大小query_cache_limit=8M # 查询缓存限制通过Rancher创建MySQL主服务器Deployment编写MySQL从服务器配置文件
参考主服务器的目录建设在10.20.10.22这台服务器上创建mysql目录。需要根据具体情况调整从服务器安装的虚拟机。尽量确保主服务和从服务器不在同一台物理机。
vi etc/my.cnf[client]loose_default_character_set=utf8mb4 # 默认字符集user=root # 用户名password=${mysql_password} # MySQL密码[mysqld]server-id=2 # 服务器IDsql_mode=NO_ENGINE_SUBSTITUTION # SQL模式lower_case_table_names=1 # 表名大小写敏感设置bind_address=0.0.0.0 # 绑定地址port=3306 # 端口号autocommit=1 # 自动提交设置character_set_server=utf8mb4 # 服务器字符集skip_name_resolve=1 # 跳过域名解析max_connections=20000 # 最大连接数max_connect_errors=1000 # 最大连接错误数tmpdir=/tmp # 临时文件目录log_error=/logs/ # 错误日志路径slow_query_log=1 # 慢查询日志开关slow_query_log_file=slow_query.log # 慢查询日志文件路径log_queries_not_using_indexes=1 # 记录未使用索引的查询log_slow_admin_statements=1 # 记录慢速管理语句log_slow_slave_statements=1 # 记录慢速从服务器语句log_throttle_queries_not_using_indexes=50 # 限制未使用索引查询的频率expire_logs_days=30 # 日志过期天数long_query_time=10 # 慢查询时间阈值min_examined_row_limit=100 # 最小检查行限制log_timestamps=system # 日志时间戳格式relay-log=slave-relay-bin # 中继日志文件名relay-log-index=slave-relay-bin.index # 中继日志索引文件名
通过Rancher创建MySQL从服务器Deployment
参考主服务器配置。只需要修改【指定主机运行所有 Pods】
部署PHPMyAdmin远程访问数据库
需要再Rancher的配置映射里增加phpmyadmin配置文件
<?phpdeclare(strict_types=1);// blowfish_secret是用于phpMyAdmin的cookie加密的密钥。为了安全起见,你需要生成一个足够强大且随机的字符串作为blowfish_secret。字符串长度应在32到64个字符之间。$cfg['blowfish_secret'] = '${}';$i = 0;$i++;$cfg['Servers'][$i]['auth_type'] = 'cookie';// 需要修改成rancher 服务发现中mysql主服务器的集群ip$cfg['Servers'][$i]['host'] = '';$cfg['Servers'][$i]['port'] = '3306';$cfg['Servers'][$i]['compress'] = false;$cfg['Servers'][$i]['verbose'] = 'master';$cfg['Servers'][$i]['AllowNoPassword'] = false;$i++;$cfg['Servers'][$i]['auth_type'] = 'cookie';// 需要修改成rancher 服务发现中mysql从服务器的集群ip$cfg['Servers'][$i]['host'] = '176.16.67.193';$cfg['Servers'][$i]['port'] = '3306';$cfg['Servers'][$i]['compress'] = false;$cfg['Servers'][$i]['verbose'] = 'backup';$cfg['Servers'][$i]['AllowNoPassword'] = false;
添加ingress
访问phpmyadmin
# 在主服务器上执行CREATE USER 'replication_user'@'%' IDENTIFIED BY 'your_password';GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';FLUSH PRIVILEGES;
# 在从服务器上执行## 确保替换master_server_ip为主服务器的IP地址,## 并将your_password替换为步骤1中创建的复制用户的密码。CHANGE MASTER TO MASTER_HOST='master_server_ip', MASTER_USER='replication_user', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0;# 启动同步进程START SLAVE;
通过定时脚本将mysql数据备份到指定目录
vi ~/.my.cnf# 允许免密登录[mysqldump]user=rootpassword=${mysql_password} [mysql]user=rootpassword=${mysql_password}
vi ~/backup.sh#!/bin/shset -xnow_date=$(date +%Y-%m-%d)# 设置备份保留10天。delete_date=$(date -d"10 day ago" +%Y-%m-%d)echo "backup master db server"# mysql_host 可以是主服务也可以是从的。mkdir -p /mnt/mysql/backup/master/$now_datemysqldump --all-databases -h ${mysql_host} > /mnt/mysql/backup/master/$now_date/all.sqlgzip -c /mnt/mysql/backup/master/$now_date/all.sql > /mnt/mysql/backup/master/$now_date/all.sql.gzrm -rf /mnt/mysql/backup/master/$now_date/all.sqlbackup(){ echo "database name $1" databaseName=$1 echo "backup master db server, datebase $databaseName" # mysql_host 可以是主服务也可以是从的。 mysqldump $databaseName -h ${mysql_host} > /mnt/mysql/backup/master/$now_date/$databaseName.sql gzip -c /mnt/mysql/backup/master/$now_date/$databaseName.sql > /mnt/mysql/backup/master/$now_date/$databaseName.sql.gz rm -rf /mnt/mysql/backup/master/$now_date/$databaseName.sql}# 可以为某个库单独配置加快恢复速度backup ${DatabaseName}rm -rf /mnt/mysql/backup/master/$delete_date
标签: #php排序mysql排序算法 #mysql主从配置集群 #mysql集群和主从区别 #虚拟机mysql数据库 #虚拟机启动mysql服务