目录
主节点
初始化
bash #ubuntu默认不是bash作为默认shell,不支持{xx,xx,xxx}的语法,需要切换后执行
1 2 3 4 5 6 7 8 9 10 11 mkdir -p /data/docker-compose/mysql8/{config,initdb,data}if [ -f /etc/os-release ]; then . /etc/os-release if [ "$NAME " == "Ubuntu" ] && [ "$VERSION_ID " == "20.04" ]; then chown -R systemd-coredump:systemd-coredump /data/docker-compose/mysql8 elif [ "$NAME " == "CentOS Linux" ] && [ "$VERSION_ID " == "7" ]; then chown -R polkitd:input /data/docker-compose/mysql8 fi fi
配置文件
my.cnf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 cat > /data/docker-compose/mysql8/config/my.cnf << \EOF[client] socket=/var/lib/mysql/mysql.sock [mysql] socket=/var/lib/mysql/mysql.sock default-character-set=utf8mb4 [mysqld] port=3306 mysqlx_port=33060 server-id=1 histogram_generation_max_mem_size=512M innodb_buffer_pool_chunk_size=1G innodb_buffer_pool_size=8G innodb_buffer_pool_instances=8 max_allowed_packet=256M tmp_table_size=1024M max_heap_table_size=512M innodb_parallel_read_threads=8 innodb_read_io_threads=8 innodb_write_io_threads=8 innodb_adaptive_hash_index_parts=16 transaction_isolation=REPEATABLE-READ sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION lower_case_table_names=1 default-authentication-plugin=caching_sha2_password socket=/var/lib/mysql/mysql.sock tmpdir=/tmp datadir=/var/lib/mysql log_error=/var/lib/mysql/error.log slow_query_log_file=/var/lib/mysql/slow.log pid-file=/var/lib/mysql/mysqld.pid character-set-server=utf8mb4 collation-server=utf8mb4_0900_ai_ci init_connect='SET NAMES utf8mb4' default_time_zone='+8:00' interactive_timeout=28800 wait_timeout=28800 log_bin=mysql-bin sync_binlog=1 binlog_format=ROW enforce_gtid_consistency=true gtid-mode=ON log_replica_updates=ON log-slave-updates=ON slave-skip-errors=1062 auto_increment_increment=1 auto_increment_offset=1 autocommit=1 default_week_format=1 disconnect_on_expired_password=0 explicit_defaults_for_timestamp=1 group_concat_max_len=1024 skip_name_resolve=ON innodb_lock_wait_timeout=50 innodb_print_all_deadlocks=OFF innodb_strict_mode=ON max_sp_recursion_depth=0 master_info_repository=TABLE relay_log_info_repository=TABLE secure_file_priv='' innodb_change_buffer_max_size=25 innodb_sort_buffer_size=4M join_buffer_size=4M read_buffer_size=4M read_rnd_buffer_size=4M sort_buffer_size=4M max_length_for_sort_data=4M max_sort_length=4M preload_buffer_size=4M innodb_file_per_table=ON innodb_flush_method=O_DIRECT innodb_flush_neighbors=0 innodb_io_capacity=200 innodb_io_capacity_max=2000 innodb_flush_log_at_trx_commit=1 innodb_doublewrite=ON innodb_adaptive_flushing=ON innodb_open_files=4000 table_definition_cache=2000 table_open_cache=4000 table_open_cache_instances=16 tablespace_definition_cache=256 max_connections=1000 max_connect_errors=500000 back_log=1024 innodb_thread_concurrency=0 thread_cache_size=128 thread_stack=512K innodb_log_buffer_size=512M EOF
initdb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 cat > / data/ docker- compose/ mysql8/ initdb/ initdb.sql << \EOF set sql_log_bin= 0 ;use mysql; alter user 'root' @'%' IDENTIFIED WITH caching_sha2_password BY 'Zszc_0501' ; create user 'repl' @'%' identified WITH caching_sha2_password BY 'Repl_0501' ;grant replication client,replication slave on * .* to 'repl' @'%' ;create user 'bkuser' @'%' identified WITH caching_sha2_password BY 'Bkuser_0501' ;grant reload,process,lock tables,replication client on * .* to 'bkuser' @'%' ;create user 'exporter' @'%' identified WITH caching_sha2_password BY 'Exporter_0501' ;grant process,replication client on * .* to 'exporter' @'%' ;grant select on performance_schema.* to 'exporter' @'%' ;flush privileges; set sql_log_bin= 1 ;EOF
docker-compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 cat > /data/docker-compose/mysql8/docker-compose.yaml << \EOFversion: "3" services: mysql: image: mysql:8.0.33 container_name: mysql8 environment: - MYSQL_ALLOW_EMPTY_PASSWORD=1 volumes: - /etc/localtime:/etc/localtime - /tmp:/tmp - /data/docker-compose/mysql8/data:/var/lib/mysql - /data/docker-compose/mysql8/config/my.cnf:/etc/my.cnf - /data/docker-compose/mysql8/initdb:/docker-entrypoint-initdb.d expose: - 3306 - 33060 restart: unless-stopped network_mode: "host" mysql-exporter: image: prom/mysqld-exporter:v0.14.0 container_name: mysql8-exporter environment: - DATA_SOURCE_NAME=exporter:Exporter_0501@(127.0.0.1:3306)/ expose: - 9104 restart: unless-stopped network_mode: "host" EOF cd /data/docker-compose/mysql8
从节点
初始化
bash #ubuntu默认不是bash作为默认shell,不支持{xx,xx,xxx}的语法,需要切换后执行
1 2 3 4 5 6 7 8 9 10 11 mkdir -p /data/docker-compose/mysql8-slave/{config,initdb,data}if [ -f /etc/os-release ]; then . /etc/os-release if [ "$NAME " == "Ubuntu" ] && [ "$VERSION_ID " == "20.04" ]; then chown -R systemd-coredump:systemd-coredump /data/docker-compose/mysql8 elif [ "$NAME " == "CentOS Linux" ] && [ "$VERSION_ID " == "7" ]; then chown -R polkitd:input /data/docker-compose/mysql8 fi fi
配置文件
my.cnf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 cat > /data/docker-compose/mysql8-slave/config/my.cnf << \EOF[client] socket=/var/lib/mysql/mysql.sock [mysql] socket=/var/lib/mysql/mysql.sock default-character-set=utf8mb4 [mysqld] port=3307 mysqlx_port=33070 server-id=2 histogram_generation_max_mem_size=512M innodb_buffer_pool_chunk_size=1G innodb_buffer_pool_size=8G innodb_buffer_pool_instances=8 max_allowed_packet=256M tmp_table_size=1024M max_heap_table_size=512M innodb_parallel_read_threads=8 innodb_read_io_threads=8 innodb_write_io_threads=8 innodb_adaptive_hash_index_parts=16 transaction_isolation=REPEATABLE-READ sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION lower_case_table_names=1 default-authentication-plugin=caching_sha2_password socket=/var/lib/mysql/mysql.sock tmpdir=/tmp datadir=/var/lib/mysql log_error=/var/lib/mysql/error.log slow_query_log_file=/var/lib/mysql/slow.log pid-file=/var/lib/mysql/mysqld.pid character-set-server=utf8mb4 collation-server=utf8mb4_0900_ai_ci init_connect='SET NAMES utf8mb4' default_time_zone='+8:00' interactive_timeout=28800 wait_timeout=28800 log_bin=mysql-bin sync_binlog=1 binlog_format=ROW enforce_gtid_consistency=true gtid-mode=ON log_replica_updates=ON log-slave-updates=ON slave-skip-errors=1062 auto_increment_increment=1 auto_increment_offset=1 autocommit=1 default_week_format=1 disconnect_on_expired_password=0 explicit_defaults_for_timestamp=1 group_concat_max_len=1024 skip_name_resolve=ON innodb_lock_wait_timeout=50 innodb_print_all_deadlocks=OFF innodb_strict_mode=ON max_sp_recursion_depth=0 master_info_repository=TABLE relay_log_info_repository=TABLE secure_file_priv='' innodb_change_buffer_max_size=25 innodb_sort_buffer_size=4M join_buffer_size=4M read_buffer_size=4M read_rnd_buffer_size=4M sort_buffer_size=4M max_length_for_sort_data=4M max_sort_length=4M preload_buffer_size=4M innodb_file_per_table=ON innodb_flush_method=O_DIRECT innodb_flush_neighbors=0 innodb_io_capacity=200 innodb_io_capacity_max=2000 innodb_flush_log_at_trx_commit=1 innodb_doublewrite=ON innodb_adaptive_flushing=ON innodb_open_files=4000 table_definition_cache=2000 table_open_cache=4000 table_open_cache_instances=16 tablespace_definition_cache=256 max_connections=1000 max_connect_errors=500000 back_log=1024 innodb_thread_concurrency=0 thread_cache_size=128 thread_stack=512K innodb_log_buffer_size=512M EOF
initdb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 cat > / data/ docker- compose/ mysql8- slave/ initdb/ initdb.sql << \EOF set sql_log_bin= 0 ;use mysql; alter user 'root' @'%' IDENTIFIED WITH caching_sha2_password BY 'Zszc_0501' ; create user 'repl' @'%' identified WITH caching_sha2_password BY 'Repl_0501' ;grant replication client,replication slave on * .* to 'repl' @'%' ;create user 'bkuser' @'%' identified WITH caching_sha2_password BY 'Bkuser_0501' ;grant reload,process,lock tables,replication client on * .* to 'bkuser' @'%' ;create user 'exporter' @'%' identified WITH caching_sha2_password BY 'Exporter_0501' ;grant process,replication client on * .* to 'exporter' @'%' ;grant select on performance_schema.* to 'exporter' @'%' ;flush privileges; set sql_log_bin= 1 ;change master to master_host= 'repl_host' , master_port= repl_port, master_user= 'repl' , master_password= 'Repl_0501' , master_auto_position= 1 , master_ssl= 1 ; START SLAVE;EOF
docker-compose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 cat > /data/docker-compose/mysql8-slave/docker-compose.yaml << \EOFversion: "3" services: mysql: image: mysql:8.0.33 container_name: mysql8-slave environment: - MYSQL_ALLOW_EMPTY_PASSWORD=1 volumes: - /etc/localtime:/etc/localtime - /tmp:/tmp - /data/docker-compose/mysql8-slave/data:/var/lib/mysql - /data/docker-compose/mysql8-slave/config/my.cnf:/etc/my.cnf - /data/docker-compose/mysql8-slave/initdb:/docker-entrypoint-initdb.d expose: - 3307 - 33070 restart: unless-stopped network_mode: "host" mysql-exporter: image: prom/mysqld-exporter:v0.14.0 container_name: mysql8-exporter-slave command : - --web.listen-address=:9204 environment: - DATA_SOURCE_NAME=exporter:Exporter_0501@(127.0.0.1:3307)/ expose: - 9204 restart: unless-stopped network_mode: "host" EOF sed -i "/repl_host/s@repl_host@127.0.0.1@g" /data/docker-compose/mysql8-slave/initdb/initdb.sql sed -i "/repl_port/s@repl_port@3306@g" /data/docker-compose/mysql8-slave/initdb/initdb.sql cd /data/docker-compose/mysql8-slave
数据迁移
mysqlx
1 2 3 4 mysqlsh --uri=root@192.168.4.230:33060 util.dumpInstance("ry-cloud-0531" , { format: "sql" });
mysqldump
导出
1 2 mysqldump --single-transaction --default-character-set=utf8mb4 -uroot -pDQkD@v=0 ry-cloud-0531 | gzip > ry-cloud-0531_backup_$(date +%Y%m%d_%H%M%S).sql.gz
导入
1 2 3 4 5 6 gzip -d ry-cloud-0531_backup_20230606_094013.sql.gz mysql -e "create database \`ry-cloud-0531\`;" mysql -e "show databases" mysql ry-cloud-0531 < /tmp/ry-cloud-0531_backup_20230606_094013.sql
ai问答
你提到的/var/lib/mysql/#innodb_redo
目录下的文件大小和数量与你的innodb_log%
配置不符,原因可能是这些文件是在MySQL异常情况下产生的临时redo日志文件。它们可能是在MySQL执行某些操作时,例如崩溃恢复或者在线DDL操作时产生的。
正常情况下,InnoDB redo日志文件的数量由innodb_log_files_in_group
参数控制,大小由innodb_log_file_size
参数控制。但是,在特殊情况下,MySQL可能会产生额外的临时redo日志文件,文件名以#ib_redo
开头,后面跟一个序号。
这种情况下,你可以采取以下步骤进行处理:
停止MySQL服务:确保所有事务都已完成,然后安全地停止MySQL服务。
1 2 3 4 5 sudo systemctl stop mysql ``` 2. 备份临时redo日志文件:在删除任何文件之前,建议先备份这些文件。可以将这些临时文件移动到一个单独的目录中。
mkdir /var/lib/mysql/innodb_redo_backup
mv /var/lib/mysql/#innodb_redo* /var/lib/mysql/innodb_redo_backup/
1 2 3 4 5 3. 启动MySQL服务:删除或移动临时redo日志文件后,重新启动MySQL服务。 ```` sudo systemctl start mysql
检查MySQL日志:启动MySQL后,检查/var/log/mysql/error.log
,确保没有任何错误信息。
如果一切正常,可以删除备份的临时redo日志文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 rm -rf /var/lib/mysql/innodb_redo_backup ``` 注意:请在执行这些操作之前确保你有足够的数据备份。如果你不确定如何处理这些文件,请联系你的系统管理员或数据库管理员寻求帮助。 InnoDB 存储引擎会根据 `innodb_log_file_size` 的设定值来自动创建 redo 日志文件,每个 redo 日志文件的大小通常是 `innodb_log_file_size` 的倍数,但并不一定是精确的倍数。当 InnoDB 存储引擎自动创建新的 redo 日志文件时,它会尝试将新文件的大小设置为下一个 2 的幂次方,并且不小于 `innodb_log_file_size` 的设定值。这个幂次方的值通常是 1、2、4、8 等,因此每个 redo 日志文件的大小通常是 `innodb_log_file_size` 的 1-8 倍之间。 在您的情况下,每个 redo 日志文件的大小都是 `innodb_log_file_size` 的 6 倍,这可能是因为 InnoDB 存储引擎在自动创建 redo 日志文件时,选择了比较接近但不是精确的 6 倍 `innodb_log_file_size` 的大小。这个行为是 InnoDB 存储引擎的默认行为,无法通过参数进行配置或修改。 需要注意的是,如果您修改了 `innodb_log_file_size` 参数的值,InnoDB 存储引擎会自动创建新的 redo 日志文件,并且会根据新的参数值来计算每个文件的大小。但是,修改 `innodb_log_file_size` 参数的值可能会对系统性能和可靠性产生影响,因此需要谨慎操作。 如果您没有配置 `innodb_log_file_size` 参数,InnoDB 存储引擎会使用默认值 `48MB`,并且会记录所有的 redo 日志,并不会覆盖已有的日志。当当前的 redo 日志文件已满时,InnoDB 存储引擎会自动创建新的 redo 日志文件,并将新的日志记录在新的文件中。 这种默认行为可以确保所有的 redo 日志都得到记录,并且不会被覆盖或删除,从而保证数据的可靠性和完整性。但是,这也会导致 redo 日志文件占用大量的磁盘空间,可能会影响系统的性能和可用性。因此,在实际应用中,建议根据实际需求和系统配置,适当调整 `innodb_log_file_size` 参数的值,并定期备份 redo 日志文件,以保证数据的安全和可靠性。 需要注意的是,在没有进行备份的情况下,如果系统出现故障或异常情况,可能会导致 redo 日志文件损坏或丢失,进而导致数据无法恢复或修复。因此,定期备份 redo 日志文件并进行存储和管理,是确保数据安全和可靠性的重要措施之一。 `innodb_log_file_size=512M` 和 `innodb_log_files_in_group=2` 的配置是合理的,它们设置了每个 redo 日志文件的最大大小为 512MB,每组日志文件只有两个。这个配置下,每组 redo 日志文件的总大小为 1GB。这个配置可以在一定程度上提高 InnoDB 存储引擎的性能和可靠性,但是需要注意的是,修改 redo 日志文件的大小和数量可能会对系统性能和可靠性产生影响,应该谨慎操作。 `innodb_online_alter_log_max_size=1G` 是用于控制在线 DDL 操作(例如 ALTER TABLE)的日志大小的参数。在线 DDL 操作会生成大量的回滚段和 redo 日志,因此需要控制日志文件的大小,以防止占用过多的磁盘空间和影响系统性能。这个参数的默认值是 128MB,如果您需要支持大型的在线 DDL 操作,可以适当增大它的值。 除了上述参数,还有一些其他的 InnoDB 相关的参数也可以影响系统性能和可靠性。例如,`innodb_buffer_pool_size` 参数用于控制 InnoDB 的缓冲池大小,可以影响数据的读写性能;`innodb_flush_log_at_trx_commit` 参数用于控制事务提交时的日志写入策略,可以影响事务的持久性和性能;`innodb_io_capacity` 和 `innodb_io_capacity_max` 参数用于控制磁盘 IO 的并发度和吞吐量,可以影响系统的 IO 性能;`innodb_thread_concurrency` 参数用于控制 InnoDB 存储引擎的并发度,可以影响系统的并发性能等等。这些参数的配置需要根据实际的系统配置和负载情况进行调整。 MySQL提供了多种工具和方法来迁移数据库,其中 mysqldump 和 MySQL Shell (包括 MySQLx)是两种常用的工具。下面是用 mysqldump 和 MySQL Shell 迁移 MySQL 数据库的最佳实践: 使用 mysqldump 迁移 MySQL 数据库的步骤如下: 1. 在源数据库上运行以下命令导出数据库:
$ mysqldump -u -p ry-cloud-0531 > ry-cloud-0531-backup.sql
1 2 3 4 5 6 7 8 9 这将在当前目录下创建名为 ry-cloud-0531-backup.sql 的备份文件。 2. 将备份文件传输到目标服务器上。 3. 在目标数据库上运行以下命令将备份文件导入到目标数据库中: ```` $ mysql -u <username> -p <password> ry-cloud-0531 < ry-cloud-0531-backup.sql
这将在目标数据库中创建名为 ry-cloud-0531 的数据库,并将备份文件中的数据导入到该数据库中。
使用 MySQL Shell (包括 MySQLx) 迁移 MySQL 数据库的步骤如下:
在源服务器上运行以下命令连接到 MySQL Shell:
1 2 3 4 5 6 7 $ mysqlsh --uri=<username>@<source_host>:<port> ``` 这将打开 MySQL Shell。 2. 运行以下命令将数据库导出:
MySQL> util.dumpInstance(“ry-cloud-0531”, { format: “sql” });
1 2 3 4 5 6 7 8 9 这将在当前目录下创建名为 ry-cloud-0531.sql 的备份文件。 3. 将备份文件传输到目标服务器上。 4. 在目标服务器上运行以下命令连接到 MySQL Shell: ```` $ mysqlsh --uri=<username>@<target_host>:<port>
运行以下命令将备份文件导入到目标数据库中:
MySQL> util.loadDump("ry-cloud-0531.sql");
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 这将在目标数据库中创建名为 ry-cloud-0531 的数据库,并将备份文件中的数据导入到该数据库中。 希望这些步骤可以帮助您成功迁移 MySQL 数据库。 这个错误是因为您的 mysqlsh 命令行工具不支持 default-character-set 选项,而您的配置文件中可能有这个选项。您可以尝试以下几种方法来解决这个问题: - 在配置文件中删除或注释掉 default-character-set 选项,或者将其移动到 [mysql] 或 [mysqld] 节中。 - 在配置文件中给 default-character-set 选项加上 loose_ 前缀,这样可以让 mysqlsh 忽略不支持的选项,但会显示一个警告。 - 在运行 mysqlsh 命令时加上 --no-defaults 选项,这样可以让 mysqlsh 不读取配置文件中的选项。 请参考¹²³⁴中的更多信息和示例。希望对您有所帮助。👍 源: 与必应的对话, 2023/6/6 (1) How to change the default character set of mysql using docker-compose .... https://stackoverflow.com/questions/45729326/how-to-change-the-default-character-set-of-mysql-using-docker-compose. (2) mysqlbinlog: unknown variable 'default-character-set=utf8mb4'. https://stackoverflow.com/questions/70233283/mysqlbinlog-unknown-variable-default-character-set-utf8mb4. (3) MySQL unknown variable 'default-character-set=utf8'的解决 - CSDN博客. https://blog.csdn.net/a77687789/article/details/101331618. (4) MySQL :: MySQL Shell 8.0 :: A.1 mysqlsh — The MySQL Shell. https://dev.mysql.com/doc/mysql-shell/8.0/en/mysqlsh.html. 当你在生产环境中使用 mysqldump 命令时,确保命令不会影响数据库的性能和稳定性非常重要。以下是一个经过优化的 mysqldump 命令,可以帮助你在生产环境中安全地导出 `ry-cloud-0531` 数据库:
mysqldump --single-transaction --routines --triggers --events --add-drop-table --skip-lock-tables --set-gtid-purged=OFF --hex-blob --result-file=<backup_file.sql> --user= --password= ry-cloud-0531
这个命令包含了以下参数:
- `--single-transaction`:在导出数据时使用事务,以确保导出数据的一致性。
- `--routines`:导出存储过程和函数。
- `--triggers`:导出触发器。
- `--events`:导出事件。
- `--add-drop-table`:在导出数据之前,添加删除数据表的语句。
- `--skip-lock-tables`:在导出数据时,跳过锁定数据表的步骤,避免对数据库性能的影响。
- `--set-gtid-purged=OFF`:在导出数据时,禁用 GTID 信息,可以避免在还原数据时出现一些问题。
- `--hex-blob`:在导出数据时,将二进制数据转换为十六进制格式。
- `--result-file=<backup_file.sql>`:将导出的数据保存到指定的文件中。
- `--user=<username>`:使用指定的用户名连接到 MySQL 服务器。
- `--password=<password>`:指定连接到 MySQL 服务器所需的密码。
- `ry-cloud-0531`:要导出的数据库的名称。
这个命令跳过了锁定数据表和添加锁定语句的步骤,从而避免了对数据库性能的影响。此外,禁用 GTID 信息可以避免在还原数据时出现一些问题。使用 `--hex-blob` 参数可以确保二进制数据正确导出。
请注意,这个命令不包含 `--compress` 参数,因为在导出期间启用压缩可能会占用大量 CPU 资源,从而影响数据库性能。
最后,为了保证备份数据的安全性,建议你将备份文件保存到安全的位置,并定期测试备份的可用性和完整性。
希望这些信息能够帮助你在生产环境中安全地导出 `ry-cloud-0531` 数据库。