# MYSQL PXC (docker for windows) 常用的mysql集群設計方案 * Replication 速度快 弱一致性 低價值 場景:日誌、新聞、帖子 * PXC 速度慢 強一致性 高價值 場景:訂單、帳號、財務 PXC大致原理為:當有寫入修改操作時,將該操作在集群內所有機器上都執行一遍,只有所有機器都確認完成後,這條操作才算成功。大致可以總結為以下幾個特點: 強一致性,要么全成功,要么全失敗,保證每個節點數據一致 數據一致,意味著全部節點可讀可寫,常規讀寫分離變負載均衡 無同步延遲 因為所有節點都要執行一次寫操作,所以速度慢於主從方案 最後一個節點寫入後才算成功寫入,因此寫入速度取決於集群內最慢的那台機器 當集群中任意節點執行寫操作時,請求提交給PXC,PXC負責將寫操作在其他節點也執行一遍,當所有節點執行成功時,才會正式寫入。 綜上所述,PXC性能稍差但數據安全等級極高,適合對數據安全有要求的架構。  # docker for windwos 原因可能就是集群不能linux 映射 windows 檔案目錄可以考慮換個方向去弄, 照這樣弄下來可能就是正常的linux 這個配置檔是沒什麼問題的,等待後續再成熟一點應該可以(? https://github.com/bitnami/bitnami-docker-mariadb-galera/issues/11#issuecomment-594452882 ``` version: "3.4" networks: testbridge: external: name: testbridge services: mysql-pxc1: user: root image: percona/percona-xtradb-cluster command: "--innodb-flush-method=fsync --user=root &" deploy: mode: global environment: - MYSQL_ROOT_PASSWORD=abc123 - CLUSTER_NAME=PXC - XTRABACKUP_PASSWORD=abc123 volumes: - /c/Users/test/px1/:/tmp/ - /c/Users/test/px1/:/var/lib/mysql/ networks: - testbridge ports: - 3306:3306 mysql-pxc2: user: root image: percona/percona-xtradb-cluster command: "--innodb-flush-method=fsync --user=root &" deploy: mode: global environment: - MYSQL_ROOT_PASSWORD=abc123 - CLUSTER_NAME=PXC - XTRABACKUP_PASSWORD=abc123 - CLUSTER_JOIN=192.168.99.100:3306 volumes: - /c/Users/test/px2/tmp/:/tmp/ - /c/Users/test/px2/:/var/lib/mysql/ networks: - testbridge ports: - 3307:3306 mysql-pxc3: user: root image: percona/percona-xtradb-cluster command: " --innodb-flush-method=fsync --user=root &" deploy: mode: global environment: - MYSQL_ROOT_PASSWORD=abc123 - CLUSTER_NAME=PXC - XTRABACKUP_PASSWORD=abc123 - CLUSTER_JOIN=192.168.99.100:3306 volumes: - /c/Users/test/px3/tmp/:/tmp/ - /c/Users/test/px3/:/var/lib/mysql/ networks: - testbridge ports: - 3308:3306 ``` ``` testbridge_mysql-pxc3.0.ere449z487mv@default | + exec mysqld --innodb-flush-method=fsync --user=root testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.451657Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.459801Z 0 [Note] mysqld (mysqld 5.7.29-32-57) starting as process 1 ... testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.467036Z 0 [Warning] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.467791Z 0 [Note] WSREP: Setting wsrep_ready to false testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.467876Z 0 [Note] WSREP: No pre-stored wsrep-start position found. Skipping position initialization. testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.467918Z 0 [Note] WSREP: wsrep_load(): loading provider library '/usr/lib64/galera3/libgalera_smm.so' testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.469789Z 0 [Note] WSREP: wsrep_load(): Galera 3.43(ra60e019) by Codership Oy <info@codership.com> loaded successfully. testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.469891Z 0 [Note] WSREP: CRC-32C: using hardware acceleration. testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.475806Z 0 [Note] WSREP: Found saved state: 00000000-0000-0000-0000-000000000000:-1, safe_to_bootstrap: 1 testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.483625Z 0 [ERROR] WSREP: mmap() on '/var/lib/mysql//galera.cache' failed: 22 (Invalid argument) testbridge_mysql-pxc3.0.ere449z487mv@default | at galerautils/src/gu_mmap.cpp:MMap():46 testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.484393Z 0 [ERROR] WSREP: Failed to initialize wsrep_provider (reason:7). Must shutdown testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.484418Z 0 [ERROR] Aborting testbridge_mysql-pxc3.0.ere449z487mv@default | testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.484431Z 0 [Note] Binlog end testbridge_mysql-pxc3.0.ere449z487mv@default | 2020-05-25T11:44:12.485239Z 0 [Note] mysqld: Shutdown complete ``` # 不掛載 docker mount volume ㄡ...我都忘了把windwos 升級到 pro 了 可能期待下篇了 wsl2 + docker 反正配置檔弄得差不多了(? 
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.