{"id":1572,"date":"2026-04-04T07:34:14","date_gmt":"2026-04-04T07:34:14","guid":{"rendered":"https:\/\/robinluo.top\/?p=1572"},"modified":"2026-04-04T07:34:23","modified_gmt":"2026-04-04T07:34:23","slug":"docker-mysql-8-0-%e4%b8%bb%e4%bb%8e%e5%a4%8d%e5%88%b6%e9%9b%86%e7%be%a4%e5%ae%8c%e6%95%b4%e6%90%ad%e5%bb%ba%e6%8c%87%e5%8d%97","status":"publish","type":"post","link":"https:\/\/robinluo.top\/?p=1572","title":{"rendered":"Docker MySQL 8.0 \u4e3b\u4ece\u590d\u5236\u96c6\u7fa4\u5b8c\u6574\u642d\u5efa\u6307\u5357"},"content":{"rendered":"\n<h2 id=\"\u6982\u8ff0\">\u6982\u8ff0<\/h2>\n\n\n\n<p>\u672c\u6587\u6863\u8be6\u7ec6\u4ecb\u7ecd\u4e86\u5982\u4f55\u4f7f\u7528 Docker Compose \u642d\u5efa MySQL 8.0 \u7684\u4e3b\u4ece\u590d\u5236\u96c6\u7fa4\uff0c\u5305\u542b 1 \u4e2a\u4e3b\u8282\u70b9\uff08Master\uff09\u548c 2 \u4e2a\u4ece\u8282\u70b9\uff08Slave\uff09\uff0c\u5b9e\u73b0\u6570\u636e\u81ea\u52a8\u590d\u5236\u3001\u8bfb\u5199\u5206\u79bb\u548c\u9ad8\u53ef\u7528\u3002<\/p>\n\n\n\n<h2 id=\"\u7cfb\u7edf\u8981\u6c42\">\u7cfb\u7edf\u8981\u6c42<\/h2>\n\n\n\n<ul><li>Docker Engine 19.03+<\/li><li>Docker Compose v2.0+<\/li><li>\u81f3\u5c11 4GB \u53ef\u7528\u5185\u5b58<\/li><li>\u6709\u8db3\u591f\u7684\u78c1\u76d8\u7a7a\u95f4\u5b58\u50a8\u6570\u636e<\/li><\/ul>\n\n\n\n<h2 id=\"\u6587\u4ef6\u7ed3\u6784\">\u6587\u4ef6\u7ed3\u6784<\/h2>\n\n\n\n<p>\u51c6\u5907\u4ee5\u4e0b\u6587\u4ef6\uff1a<\/p>\n\n\n\n<ul><li><code>mysql.yml<\/code>&nbsp;&#8211; Docker Compose \u914d\u7f6e\u6587\u4ef6<\/li><li><code>setup-users.sql<\/code>&nbsp;&#8211; \u521d\u59cb\u5316\u7528\u6237\u811a\u672c<\/li><li><code>init-replication.sh<\/code>&nbsp;&#8211; \u521d\u59cb\u5316\u590d\u5236\u811a\u672c<\/li><\/ul>\n\n\n\n<h2 id=\"\u6b65\u9aa4-1\u521b\u5efa-docker-compose-\u914d\u7f6e\u6587\u4ef6\">\u6b65\u9aa4 1\uff1a\u521b\u5efa Docker Compose \u914d\u7f6e\u6587\u4ef6<\/h2>\n\n\n\n<p>\u521b\u5efa&nbsp;<code>mysql.yml<\/code>&nbsp;\u6587\u4ef6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># MySQL \u4e3b\u4ece\u590d\u5236\u96c6\u7fa4 Docker Compose \u914d\u7f6e\n# \ud83d\udcc5 \u521b\u5efa\u65e5\u671f\uff1a2026-04-01\n# \ud83d\udccc \u7aef\u53e3\uff1a3306 (\u4e3b), 3307 (\u4ece 1), 3308 (\u4ece 2)\n# \ud83c\udfaf \u67b6\u6784\uff1a1 \u4e3b\u8282\u70b9 + 2 \u4ece\u8282\u70b9\n# \ud83d\udd17 \u7279\u6027\uff1a\u6570\u636e\u81ea\u52a8\u590d\u5236\u3001\u8bfb\u5199\u5206\u79bb\u3001\u9ad8\u53ef\u7528\n\nversion: '3.8'\n\nservices:\n  # ==================== \u4e3b\u8282\u70b9 (Master) ====================\n  mysql-master:\n    image: mysql:8.0\n    container_name: mysql-master\n    restart: always\n    environment:\n      MYSQL_ROOT_PASSWORD: root123456\n      MYSQL_DATABASE: default_db\n      MYSQL_USER: dbuser\n      MYSQL_PASSWORD: dbpass123\n      TZ: Asia\/Shanghai\n    ports:\n      - \"0.0.0.0:3306:3306\"\n    volumes:\n      - ~\/docker-data\/mysql\/master\/data:\/var\/lib\/mysql:z\n      - ~\/docker-data\/mysql\/master\/logs:\/var\/log\/mysql:z\n      - ~\/docker-data\/mysql\/master\/conf:\/etc\/mysql\/conf.d:z\n      - .\/setup-users.sql:\/docker-entrypoint-initdb.d\/setup-users.sql:ro\n    command:\n      - --server-id=1\n      - --log-bin=mysql-bin\n      - --binlog-format=ROW\n      - --gtid-mode=ON\n      - --enforce-gtid-consistency=ON\n      - --character-set-server=utf8mb4\n      - --collation-server=utf8mb4_unicode_ci\n    networks:\n      - mysql-network\n    healthcheck:\n      test: &#91;\"CMD\", \"mysqladmin\", \"ping\", \"-h\", \"localhost\", \"-u\", \"root\", \"-proot123456\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n\n  # ==================== \u4ece\u8282\u70b9 1 (Slave 1) ====================\n  mysql-slave-1:\n    image: mysql:8.0\n    container_name: mysql-slave-1\n    restart: always\n    environment:\n      MYSQL_ROOT_PASSWORD: root123456\n      MYSQL_DATABASE: default_db\n      MYSQL_USER: dbuser\n      MYSQL_PASSWORD: dbpass123\n      TZ: Asia\/Shanghai\n    ports:\n      - \"0.0.0.0:3307:3306\"\n    volumes:\n      - ~\/docker-data\/mysql\/slave-1\/data:\/var\/lib\/mysql:z\n      - ~\/docker-data\/mysql\/slave-1\/logs:\/var\/log\/mysql:z\n      - ~\/docker-data\/mysql\/slave-1\/conf:\/etc\/mysql\/conf.d:z\n      - .\/setup-users.sql:\/docker-entrypoint-initdb.d\/setup-users.sql:ro\n    command:\n      - --server-id=2\n      - --relay-log=mysql-relay-bin\n      - --read-only=ON\n      - --gtid-mode=ON\n      - --enforce-gtid-consistency=ON\n      - --character-set-server=utf8mb4\n      - --collation-server=utf8mb4_unicode_ci\n    networks:\n      - mysql-network\n    depends_on:\n      - mysql-master\n    healthcheck:\n      test: &#91;\"CMD\", \"mysqladmin\", \"ping\", \"-h\", \"localhost\", \"-u\", \"root\", \"-proot123456\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n\n  # ==================== \u4ece\u8282\u70b9 2 (Slave 2) ====================\n  mysql-slave-2:\n    image: mysql:8.0\n    container_name: mysql-slave-2\n    restart: always\n    environment:\n      MYSQL_ROOT_PASSWORD: root123456\n      MYSQL_DATABASE: default_db\n      MYSQL_USER: dbuser\n      MYSQL_PASSWORD: dbpass123\n      TZ: Asia\/Shanghai\n    ports:\n      - \"0.0.0.0:3308:3306\"\n    volumes:\n      - ~\/docker-data\/mysql\/slave-2\/data:\/var\/lib\/mysql:z\n      - ~\/docker-data\/mysql\/slave-2\/logs:\/var\/log\/mysql:z\n      - ~\/docker-data\/mysql\/slave-2\/conf:\/etc\/mysql\/conf.d:z\n      - .\/setup-users.sql:\/docker-entrypoint-initdb.d\/setup-users.sql:ro\n    command:\n      - --server-id=3\n      - --relay-log=mysql-relay-bin\n      - --read-only=ON\n      - --gtid-mode=ON\n      - --enforce-gtid-consistency=ON\n      - --character-set-server=utf8mb4\n      - --collation-server=utf8mb4_unicode_ci\n    networks:\n      - mysql-network\n    depends_on:\n      - mysql-master\n    healthcheck:\n      test: &#91;\"CMD\", \"mysqladmin\", \"ping\", \"-h\", \"localhost\", \"-u\", \"root\", \"-proot123456\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n\nnetworks:\n  mysql-network:\n    driver: bridge\n<\/code><\/pre>\n\n\n\n<h2 id=\"\u6b65\u9aa4-2\u521b\u5efa\u7528\u6237\u521d\u59cb\u5316\u811a\u672c\">\u6b65\u9aa4 2\uff1a\u521b\u5efa\u7528\u6237\u521d\u59cb\u5316\u811a\u672c<\/h2>\n\n\n\n<p>\u521b\u5efa&nbsp;<code>setup-users.sql<\/code>&nbsp;\u6587\u4ef6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- \u521d\u59cb\u5316\u811a\u672c\uff0c\u786e\u4fddroot\u7528\u6237\u53ef\u4ee5\u4ece\u4efb\u4f55\u4e3b\u673a\u8fde\u63a5\n-- \u5e76\u521b\u5efa\u666e\u901a\u7528\u6237\n\n-- \u4e3aroot\u7528\u6237\u521b\u5efa\u4ece\u4efb\u610f\u4e3b\u673a\u8bbf\u95ee\u7684\u8d26\u6237\nCREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY 'root123456';\nGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;\nFLUSH PRIVILEGES;\n\n-- \u786e\u4fdddbuser\u5728\u6240\u6709\u8282\u70b9\u4e0a\u90fd\u5b58\u5728\nCREATE USER IF NOT EXISTS 'dbuser'@'%' IDENTIFIED BY 'dbpass123';\nGRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'dbuser'@'%';\nFLUSH PRIVILEGES;\n\n-- \u4e5f\u4fdd\u7559localhost\u8bbf\u95ee\u6743\u9650\nALTER USER 'root'@'localhost' IDENTIFIED BY 'root123456';\nFLUSH PRIVILEGES;\n<\/code><\/pre>\n\n\n\n<h2 id=\"\u6b65\u9aa4-3\u521b\u5efa\u590d\u5236\u521d\u59cb\u5316\u811a\u672c\">\u6b65\u9aa4 3\uff1a\u521b\u5efa\u590d\u5236\u521d\u59cb\u5316\u811a\u672c<\/h2>\n\n\n\n<p>\u521b\u5efa&nbsp;<code>init-replication.sh<\/code>&nbsp;\u6587\u4ef6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# MySQL \u4e3b\u4ece\u914d\u7f6e\u521d\u59cb\u5316\u811a\u672c\n# \ud83d\udcc5 \u521b\u5efa\u65e5\u671f\uff1a2026-04-01\n# \u7528\u9014\uff1a\u914d\u7f6e\u4e3b\u4ece\u590d\u5236\u5173\u7cfb\n\nset -e\n\necho \"\ud83d\udd27 \u5f00\u59cb\u914d\u7f6e MySQL \u4e3b\u4ece\u590d\u5236...\"\necho \"\"\n\n# \u7b49\u5f85\u4e3b\u8282\u70b9\u5c31\u7eea\necho \"\u23f3 \u7b49\u5f85\u4e3b\u8282\u70b9\u5c31\u7eea...\"\nfor i in {1..30}; do\n    if docker exec mysql-master mysql -u root -proot123456 -e \"SELECT 1\" > \/dev\/null 2>&amp;1; then\n        echo \"\u2705 \u4e3b\u8282\u70b9\u5df2\u5c31\u7eea\"\n        break\n    fi\n    sleep 2\ndone\n\n# \u7b49\u5f85\u4ece\u8282\u70b9\u5c31\u7eea\necho \"\u23f3 \u7b49\u5f85\u4ece\u8282\u70b9\u5c31\u7eea...\"\nfor i in {1..30}; do\n    if docker exec mysql-slave-1 mysql -u root -proot123456 -e \"SELECT 1\" > \/dev\/null 2>&amp;1; then\n        echo \"\u2705 \u4ece\u8282\u70b91\u5df2\u5c31\u7eea\"\n        break\n    fi\n    sleep 2\ndone\n\n# \u7b49\u5f85\u4ece\u8282\u70b92\u5c31\u7eea\necho \"\u23f3 \u7b49\u5f85\u4ece\u8282\u70b92\u5c31\u7eea...\"\nfor i in {1..30}; do\n    if docker exec mysql-slave-2 mysql -u root -proot123456 -e \"SELECT 1\" > \/dev\/null 2>&amp;1; then\n        echo \"\u2705 \u4ece\u8282\u70b92\u5df2\u5c31\u7eea\"\n        break\n    fi\n    sleep 2\ndone\n\n\n# \u521b\u5efa\u590d\u5236\u7528\u6237\necho \"\ud83d\udd10 \u521b\u5efa\u590d\u5236\u7528\u6237...\"\ndocker exec mysql-master mysql -u root -proot123456 &lt;&lt;EOF\nCREATE USER IF NOT EXISTS 'repl'@'%' IDENTIFIED BY 'repl123456';\nGRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';\nFLUSH PRIVILEGES;\nEOF\n\n# \u83b7\u53d6\u4e3b\u8282\u70b9\u4f4d\u7f6e\necho \"\ud83d\udcca \u83b7\u53d6\u4e3b\u8282\u70b9\u4f4d\u7f6e...\"\nMASTER_STATUS=$(docker exec mysql-master mysql -u root -proot123456 -e \"SHOW MASTER STATUS\\G\")\nMASTER_FILE=$(echo \"$MASTER_STATUS\" | grep \"File:\" | awk '{print $2}')\nMASTER_POS=$(echo \"$MASTER_STATUS\" | grep \"Position:\" | awk '{print $2}')\n\nif &#91; -z \"$MASTER_FILE\" ] || &#91; -z \"$MASTER_POS\" ]; then\n    echo \"\u274c \u65e0\u6cd5\u83b7\u53d6\u4e3b\u8282\u70b9\u72b6\u6001\"\n    exit 1\nfi\n\necho \"\u2705 \u4e3b\u8282\u70b9\u4f4d\u7f6e\uff1a$MASTER_FILE:$MASTER_POS\"\n\n# \u914d\u7f6e\u4ece\u8282\u70b9 1\necho \"\ud83d\udd17 \u914d\u7f6e\u4ece\u8282\u70b9 1 (mysql-slave-1)...\"\ndocker exec mysql-slave-1 mysql -u root -proot123456 &lt;&lt;EOF\nSTOP SLAVE;\nRESET SLAVE;\nCHANGE MASTER TO\n  MASTER_HOST='mysql-master',\n  MASTER_USER='repl',\n  MASTER_PASSWORD='repl123456',\n  MASTER_LOG_FILE='$MASTER_FILE',\n  MASTER_LOG_POS=$MASTER_POS,\n  GET_MASTER_PUBLIC_KEY=1;\nSTART SLAVE;\nEOF\n\n# \u914d\u7f6e\u4ece\u8282\u70b9 2\necho \"\ud83d\udd17 \u914d\u7f6e\u4ece\u8282\u70b9 2 (mysql-slave-2)...\"\ndocker exec mysql-slave-2 mysql -u root -proot123456 &lt;&lt;EOF\nSTOP SLAVE;\nRESET SLAVE;\nCHANGE MASTER TO\n  MASTER_HOST='mysql-master',\n  MASTER_USER='repl',\n  MASTER_PASSWORD='repl123456',\n  MASTER_LOG_FILE='$MASTER_FILE',\n  MASTER_LOG_POS=$MASTER_POS,\n  GET_MASTER_PUBLIC_KEY=1;\nSTART SLAVE;\nEOF\n\n# \u7b49\u5f85\u540c\u6b65\necho \"\u23f3 \u7b49\u5f85\u590d\u5236\u540c\u6b65...\"\nsleep 5\n\n# \u9a8c\u8bc1\u590d\u5236\u72b6\u6001\necho \"\"\necho \"\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\"\necho \"\ud83d\udcca \u9a8c\u8bc1\u4e3b\u4ece\u72b6\u6001\"\necho \"\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\"\n\necho \"\"\necho \"\ud83d\udccc \u4e3b\u8282\u70b9\u72b6\u6001:\"\ndocker exec mysql-master mysql -u root -proot123456 -e \"SHOW MASTER STATUS\\G\"\n\necho \"\"\necho \"\ud83d\udccc \u4ece\u8282\u70b9 1 \u72b6\u6001:\"\ndocker exec mysql-slave-1 mysql -u root -proot123456 -e \"SHOW SLAVE STATUS\\G\" | grep -E \"Slave_IO_Running|Slave_SQL_Running|Seconds_Behind_Master|Master_Host\"\n\necho \"\"\necho \"\ud83d\udccc \u4ece\u8282\u70b9 2 \u72b6\u6001:\"\ndocker exec mysql-slave-2 mysql -u root -proot123456 -e \"SHOW SLAVE STATUS\\G\" | grep -E \"Slave_IO_Running|Slave_SQL_Running|Seconds_Behind_Master|Master_Host\"\n\necho \"\"\necho \"\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\"\necho \"\u2705 \u4e3b\u4ece\u914d\u7f6e\u5b8c\u6210\uff01\"\necho \"\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\"\n<\/code><\/pre>\n\n\n\n<h2 id=\"\u6b65\u9aa4-4\u8bbe\u7f6e\u6587\u4ef6\u6743\u9650\">\u6b65\u9aa4 4\uff1a\u8bbe\u7f6e\u6587\u4ef6\u6743\u9650<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x init-replication.sh\n<\/code><\/pre>\n\n\n\n<h2 id=\"\u6b65\u9aa4-5\u542f\u52a8\u96c6\u7fa4\">\u6b65\u9aa4 5\uff1a\u542f\u52a8\u96c6\u7fa4<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># \u521b\u5efa\u6570\u636e\u76ee\u5f55\nmkdir -p ~\/docker-data\/mysql\/{master,slave-1,slave-2}\/{data,logs,conf}\nchmod -R 777 ~\/docker-data\/mysql\n\n# \u542f\u52a8\u96c6\u7fa4\ndocker compose -f mysql.yml up -d\n<\/code><\/pre>\n\n\n\n<h2 id=\"\u6b65\u9aa4-6\u521d\u59cb\u5316\u4e3b\u4ece\u590d\u5236\">\u6b65\u9aa4 6\uff1a\u521d\u59cb\u5316\u4e3b\u4ece\u590d\u5236<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/init-replication.sh\n<\/code><\/pre>\n\n\n\n<h2 id=\"\u8fde\u63a5\u4fe1\u606f\">\u8fde\u63a5\u4fe1\u606f<\/h2>\n\n\n\n<h3 id=\"\u8d26\u6237\u4fe1\u606f\">\u8d26\u6237\u4fe1\u606f<\/h3>\n\n\n\n<ul><li><strong>Root \u7528\u6237\u5bc6\u7801<\/strong>:&nbsp;<code>root123456<\/code><\/li><li><strong>\u666e\u901a\u7528\u6237<\/strong>:&nbsp;<code>dbuser<\/code>&nbsp;\/&nbsp;<code>dbpass123<\/code><\/li><\/ul>\n\n\n\n<h3 id=\"\u7aef\u53e3\u6620\u5c04\">\u7aef\u53e3\u6620\u5c04<\/h3>\n\n\n\n<ul><li><strong>\u4e3b\u8282\u70b9 (\u8bfb\u5199)<\/strong>: 3306<\/li><li><strong>\u4ece\u8282\u70b91 (\u53ea\u8bfb)<\/strong>: 3307<\/li><li><strong>\u4ece\u8282\u70b92 (\u53ea\u8bfb)<\/strong>: 3308<\/li><\/ul>\n\n\n\n<h3 id=\"\u8fde\u63a5\u793a\u4f8b\">\u8fde\u63a5\u793a\u4f8b<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u4e3b\u8282\u70b9\uff08\u5199\u64cd\u4f5c\uff09\nmysql -h 127.0.0.1 -P 3306 -u root -proot123456\n\n# \u4ece\u8282\u70b9\uff08\u8bfb\u64cd\u4f5c\uff09\nmysql -h 127.0.0.1 -P 3307 -u root -proot123456\nmysql -h 127.0.0.1 -P 3308 -u root -proot123456\n\n# \u666e\u901a\u7528\u6237\u8fde\u63a5\nmysql -h 127.0.0.1 -P 3306 -u dbuser -pdbpass123\n<\/code><\/pre>\n\n\n\n<h2 id=\"\u9a8c\u8bc1\u590d\u5236\">\u9a8c\u8bc1\u590d\u5236<\/h2>\n\n\n\n<h3 id=\"\u68c0\u67e5\u4e3b\u8282\u70b9\u72b6\u6001\">\u68c0\u67e5\u4e3b\u8282\u70b9\u72b6\u6001<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec mysql-master mysql -u root -proot123456 -e \"SHOW MASTER STATUS;\"\n<\/code><\/pre>\n\n\n\n<h3 id=\"\u68c0\u67e5\u4ece\u8282\u70b9\u72b6\u6001\">\u68c0\u67e5\u4ece\u8282\u70b9\u72b6\u6001<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec mysql-slave-1 mysql -u root -proot123456 -e \"SHOW SLAVE STATUS\\G;\"\n<\/code><\/pre>\n\n\n\n<h3 id=\"\u6d4b\u8bd5\u6570\u636e\u540c\u6b65\">\u6d4b\u8bd5\u6570\u636e\u540c\u6b65<\/h3>\n\n\n\n<p>\u5728\u4e3b\u8282\u70b9\u521b\u5efa\u8868\u5e76\u63d2\u5165\u6570\u636e\uff0c\u7136\u540e\u5728\u4ece\u8282\u70b9\u9a8c\u8bc1\u6570\u636e\u662f\u5426\u540c\u6b65\u3002<\/p>\n\n\n\n<h2 id=\"\u5e38\u89c1\u95ee\u9898\">\u5e38\u89c1\u95ee\u9898<\/h2>\n\n\n\n<h3 id=\"1-public-key-retrieval-\u9519\u8bef\">1. Public Key Retrieval \u9519\u8bef<\/h3>\n\n\n\n<p>\u5982\u679c\u5e94\u7528\u7a0b\u5e8f\u8fde\u63a5\u65f6\u51fa\u73b0 &#8220;Public Key Retrieval is not allowed&#8221; \u9519\u8bef\uff0c\u8bf7\u5728\u8fde\u63a5\u5b57\u7b26\u4e32\u4e2d\u6dfb\u52a0&nbsp;<code>allowPublicKeyRetrieval=true<\/code>&nbsp;\u53c2\u6570\u3002<\/p>\n\n\n\n<h3 id=\"2-\u4ece\u8282\u70b9\u65e0\u6cd5\u8fde\u63a5\">2. \u4ece\u8282\u70b9\u65e0\u6cd5\u8fde\u63a5<\/h3>\n\n\n\n<p>\u68c0\u67e5\u590d\u5236\u7528\u6237\u6743\u9650\u548c\u7f51\u7edc\u8fde\u63a5\uff0c\u786e\u4fdd\u4e3b\u8282\u70b9\u7684\u590d\u5236\u7528\u6237\u5141\u8bb8\u4ece\u4ece\u8282\u70b9IP\u8fde\u63a5\u3002<\/p>\n\n\n\n<h3 id=\"3-\u590d\u5236\u5ef6\u8fdf\">3. \u590d\u5236\u5ef6\u8fdf<\/h3>\n\n\n\n<p>\u4f7f\u7528&nbsp;<code>SHOW SLAVE STATUS\\G;<\/code>&nbsp;\u68c0\u67e5&nbsp;<code>Seconds_Behind_Master<\/code>&nbsp;\u5b57\u6bb5\u786e\u8ba4\u5ef6\u8fdf\u3002<\/p>\n\n\n\n<h2 id=\"\u7ba1\u7406\u547d\u4ee4\">\u7ba1\u7406\u547d\u4ee4<\/h2>\n\n\n\n<h3 id=\"\u505c\u6b62\u96c6\u7fa4\">\u505c\u6b62\u96c6\u7fa4<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker compose -f mysql.yml down\n<\/code><\/pre>\n\n\n\n<h3 id=\"\u67e5\u770b\u65e5\u5fd7\">\u67e5\u770b\u65e5\u5fd7<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker logs mysql-master\ndocker logs mysql-slave-1\ndocker logs mysql-slave-2\n<\/code><\/pre>\n\n\n\n<h3 id=\"\u5907\u4efd\u6570\u636e\">\u5907\u4efd\u6570\u636e<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec mysql-master mysqldump -u root -proot123456 --all-databases > backup.sql\n<\/code><\/pre>\n\n\n\n<h2 id=\"\u6ce8\u610f\u4e8b\u9879\">\u6ce8\u610f\u4e8b\u9879<\/h2>\n\n\n\n<ol><li><strong>\u5b89\u5168\u6027<\/strong>: \u751f\u4ea7\u73af\u5883\u8bf7\u4f7f\u7528\u66f4\u5f3a\u7684\u5bc6\u7801<\/li><li><strong>\u5907\u4efd<\/strong>: \u5b9a\u671f\u5907\u4efd\u4e3b\u8282\u70b9\u6570\u636e<\/li><li><strong>\u76d1\u63a7<\/strong>: \u76d1\u63a7\u590d\u5236\u5ef6\u8fdf\u548c\u9519\u8bef<\/li><li><strong>\u5bb9\u91cf<\/strong>: \u786e\u4fdd\u4ece\u8282\u70b9\u6709\u8db3\u591f\u5b58\u50a8\u7a7a\u95f4<\/li><li><strong>\u7f51\u7edc<\/strong>: \u4fdd\u8bc1\u4e3b\u4ece\u8282\u70b9\u95f4\u7f51\u7edc\u7a33\u5b9a<\/li><\/ol>\n\n\n\n<p>\u8fd9\u4e2a\u914d\u7f6e\u63d0\u4f9b\u4e86\u9ad8\u53ef\u7528\u7684 MySQL \u4e3b\u4ece\u590d\u5236\u96c6\u7fa4\uff0c\u9002\u5408\u8bfb\u591a\u5199\u5c11\u7684\u5e94\u7528\u573a\u666f\uff0c\u5982 WordPress \u535a\u5ba2\u7b49\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6982\u8ff0 \u672c\u6587\u6863\u8be6\u7ec6\u4ecb\u7ecd\u4e86\u5982\u4f55\u4f7f\u7528 Docker Compose \u642d\u5efa MySQL 8.0 \u7684\u4e3b\u4ece\u590d\u5236\u96c6\u7fa4\uff0c\u5305\u542b 1 \u4e2a\u4e3b\u8282\u70b9\uff08Master\uff09\u548c 2 \u4e2a\u4ece\u8282\u70b9\uff08Slave\uff09\uff0c\u5b9e\u73b0\u6570\u636e\u81ea\u52a8\u590d\u5236\u3001\u8bfb\u5199\u5206\u79bb\u548c\u9ad8\u53ef\u7528\u3002 \u7cfb\u7edf\u8981\u6c42 Docker Engine 19.03+ Docker Compose v2.0+ \u81f3\u5c11 4GB \u53ef\u7528\u5185\u5b58 \u6709\u8db3\u591f\u7684\u78c1\u76d8\u7a7a\u95f4\u5b58\u50a8\u6570\u636e \u6587\u4ef6\u7ed3\u6784 \u51c6\u5907\u4ee5\u4e0b\u6587\u4ef6\uff1a mysql.yml&nbsp;&#8211; Docker Compose \u914d\u7f6e\u6587\u4ef6 setup-users.sql&nbsp;&#8211; \u521d\u59cb\u5316\u7528\u6237\u811a\u672c init-replication.sh&nbsp;&#8211; \u521d\u59cb\u5316\u590d\u5236\u811a\u672c \u6b65\u9aa4 1\uff1a\u521b\u5efa Docker Compose \u914d\u7f6e\u6587\u4ef6 \u521b\u5efa&nbsp;mysql.yml&nbsp;\u6587\u4ef6\uff1a \u6b65\u9aa4 2\uff1a\u521b\u5efa\u7528\u6237\u521d\u59cb\u5316\u811a\u672c \u521b\u5efa&nbsp;setup-users.sql&nbsp;\u6587\u4ef6\uff1a \u6b65\u9aa4 3\uff1a\u521b\u5efa\u590d\u5236\u521d\u59cb\u5316\u811a\u672c \u521b\u5efa&nbsp;init-replication.sh&nbsp;\u6587\u4ef6\uff1a \u6b65\u9aa4 4\uff1a\u8bbe\u7f6e\u6587\u4ef6\u6743\u9650 \u6b65\u9aa4 5\uff1a\u542f\u52a8\u96c6\u7fa4 \u6b65\u9aa4 6\uff1a\u521d\u59cb\u5316\u4e3b\u4ece\u590d\u5236 \u8fde\u63a5\u4fe1\u606f \u8d26\u6237\u4fe1\u606f Root \u7528\u6237\u5bc6\u7801:&nbsp;root123456 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[19],"_links":{"self":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts\/1572"}],"collection":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1572"}],"version-history":[{"count":1,"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts\/1572\/revisions"}],"predecessor-version":[{"id":1573,"href":"https:\/\/robinluo.top\/index.php?rest_route=\/wp\/v2\/posts\/1572\/revisions\/1573"}],"wp:attachment":[{"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/robinluo.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}