diff --git a/mysql/ADD/ccmd b/mysql/ADD/ccmd index 60de37e..0c29661 100755 --- a/mysql/ADD/ccmd +++ b/mysql/ADD/ccmd @@ -1,12 +1,6 @@ #!/bin/bash ################################################## -# EVN # -# - SERVER_ID # -# - GROUP_REPLICATION # -# - GROUP_REPLICATION_LOCAL_ADDRESS # -# - GROUP_REPLICATION_GROUP_SEEDS # -# - EXTRA_SCRIPTS # # Mount file # # - /etc/my.cnf # # Mount dir # @@ -27,16 +21,6 @@ BINLOG_DIR='/var/lib/mysql-bin' SOCK_FILE='/run/mysqld/mysqld.sock' PID_FILE='/run/mysqld/mysqld.pid' INIT_FLAG= -GROUP_REPLICATION="${GROUP_REPLICATION:+1}" -EXTRA_SCRIPTS="${EXTRA_SCRIPTS:+1}" - -if [ -n "$GROUP_REPLICATION" ]; then - SERVER_ID=${SERVER_ID:?} - GROUP_REPILCATION_GROUP_NAME="${GROUP_REPILCATION_GROUP_NAME:-aaaabbbb-7777-8888-9999-ccccddddeeee}" - GROUP_REPLICATION_LOCAL_ADDRESS="${GROUP_REPLICATION_LOCAL_ADDRESS}" - GROUP_REPLICATION_GROUP_SEEDS="${GROUP_REPLICATION_GROUP_SEEDS}" - BOOTSTRAP_GROUP=1 -fi function Print { local file=/dev/null @@ -55,25 +39,6 @@ function Quit { test -n "$GOT_SIGTERM" } -function ProbeSeeds { - local all_seeds=" ${GROUP_REPLICATION_GROUP_SEEDS//,/ } " - local other_seeds="${all_seeds/ $GROUP_REPLICATION_LOCAL_ADDRESS / }" - local seed= seed_return=0 - [ "$all_seeds" = "$other_seeds" ] \ - && Print Not found local_address in group_seeds! \ - && exit 1 - Print Probing connection to other seeds ... - for seed in $other_seeds; do - echo -n "Connecting $seed ... " - curl -s --connect-timeout 8 ftp://$seed || seed_return=$? - [ 6 = "$seed_return" ] && echo failed to resolve host:"${seed%:*}"! && exit 1 - [ 7 = "$seed_return" ] && echo offline. && continue - echo online. - BOOTSTRAP_GROUP= - break - done -} - function Init { rm -f ${SOCK_FILE}* ${PID_FILE} chown -R mysql:mysql $LOG_DIR $BINLOG_DIR $DATA_DIR @@ -85,43 +50,6 @@ function Init { fi } -function InitGroupReplication { - if ! grep -i '^group[-_]replication' /etc/my.cnf; then - Print Writing advisable group replication config to /etc/my.cnf ... - grep -i '^binlog[-_]expire[-_]logs[-_]seconds' /etc/my.cnf \ - || echo 'binlog-expire-logs-seconds = 172800' >> /etc/my.cnf - echo 'group-replication-consistency = BEFORE_ON_PRIMARY_FAILOVER -group-replication-member-expel-timeout = 2 -group-replication-unreachable-majority-timeout = 2 -group-replication-autorejoin-tries = 0 -group-replication-exit-state-action = OFFLINE_MODE -' >> /etc/my.cnf - fi - if ! grep -i '^group[-_]replication' /etc/mysql/my.cnf; then - Print Writing essential group replication config to /etc/mysql/my.cnf ... - cat >> /etc/mysql/my.cnf <<-EOF -server-id = $SERVER_ID -gtid-mode = ON -enforce-gtid-consistency = TRUE -binlog-format = ROW -binlog-checksum = NONE -log-bin = /var/lib/mysql-bin/master -relay-log = /var/lib/mysql-bin/slave -log-slave-updates = TRUE -relay-log-recovery = TRUE -slave-parallel-type = LOGICAL_CLOCK -slave-preserve-commit-order = ON -disabled-storage-engines = "MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY" -plugin-load-add = "group_replication.so;mysql_clone.so" -group-replication-group-name = "$GROUP_REPILCATION_GROUP_NAME" -group-replication-local-address = "$GROUP_REPLICATION_LOCAL_ADDRESS" -group-replication-group-seeds = "$GROUP_REPLICATION_GROUP_SEEDS" -group-replication-bootstrap-group = OFF -group-replication-start-on-boot = OFF -EOF - fi -} - function ImportInitSql { local sql_file= sql_files= mysql -e "CREATE USER docker@localhost IDENTIFIED BY 'China_19\$(10)!'" @@ -136,45 +64,6 @@ function ImportInitSql { fi } -function StartGroupReplication { - if [ -n "$BOOTSTRAP_GROUP" ]; then - Print Bootstraping new group replication ... - mysql -e " - SET GLOBAL group_replication_bootstrap_group=ON; - START GROUP_REPLICATION; - SET GLOBAL group_replication_bootstrap_group=OFF; - " - else - Print Joining a running group replication ... - mysql -e "START GROUP_REPLICATION;" - fi -} - -function CreateGroupReplicationChannel { - Print Creating user and channel of group replication ... - mysql -e "SET SQL_LOG_BIN=0; - CREATE USER rpl@'%' IDENTIFIED BY 'Rpl_1234'; - GRANT REPLICATION SLAVE ON *.* TO rpl@'%'; - GRANT BACKUP_ADMIN ON *.* TO rpl@'%'; - FLUSH PRIVILEGES; - SET SQL_LOG_BIN=1; - CHANGE MASTER TO - MASTER_USER='rpl', - MASTER_PASSWORD='Rpl_1234' - FOR CHANNEL 'group_replication_recovery'; - " -} - -function StartExtraScripts { - Print Starting extra scripts ... - while sleep 2; do - for script in $(find $LOG_DIR/extra_scripts/ -type f -executable \ - 2>/dev/null || true); do - $script & - done - done & -} - function StartProc { Print Starting mysql ... mysqld -u mysql & @@ -184,26 +73,13 @@ function StartProc { [ ! -e /proc/$! ] && echo && Print unexpected error! && exit done echo - if [ -n "$INIT_FLAG" ]; then - ImportInitSql - if [ -n "$GROUP_REPLICATION" ]; then - CreateGroupReplicationChannel - fi - fi - if [ -n "$GROUP_REPLICATION" ]; then - StartGroupReplication - fi - if [ -n "$EXTRA_SCRIPTS" ]; then - StartExtraScripts - fi + [ -z "$INIT_FLAG" ] || ImportInitSql Print MySQL is ready for connections. } function Main { local pid= - [ -n "$GROUP_REPLICATION" ] && ProbeSeeds Init - [ -n "$GROUP_REPLICATION" ] && InitGroupReplication StartProc trap "GOT_SIGTERM=1; Print Got SIGTERM ..." SIGTERM while [ -z "$GOT_SIGTERM" ] && sleep 1; do diff --git a/mysql/Dockerfile b/mysql/Dockerfile index 4d52143..c21e0e4 100644 --- a/mysql/Dockerfile +++ b/mysql/Dockerfile @@ -3,23 +3,13 @@ FROM harbor.colben.cn/general/rocky$ARCH:8 MAINTAINER Colben colbenlee@gmail.com ARG ARCH ADD --chown=root:root /ADD/ /opt/ -RUN echo -e "[mysql-connectors-community]\n\ -name=MySQL Connectors Community\n\ -baseurl=https://mirrors.nju.edu.cn/mysql/yum/mysql-connectors-community-el8$ARCH/\n\ -enabled=1\n\ -gpgcheck=0\n\ -\n\ -[mysql-tools-community]\n\ -name=MySQL Tools Community\n\ -baseurl=https://mirrors.nju.edu.cn/mysql/yum/mysql-tools-community-el8$ARCH/\n\ -enabled=1\n\ -gpgcheck=0\n\ -\n\ -[mysql80-community]\n\ +RUN echo -e "[mysql80-community]\n\ name=MySQL 8.0 Community Server\n\ -baseurl=https://mirrors.nju.edu.cn/mysql/yum/mysql-8.0-community-el8${ARCH:--x86_64}/\n\ +baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/8/${ARCH:-x86_64}/\n\ enabled=1\n\ gpgcheck=0\n\ +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022\n\ + file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql\n\ " > /etc/yum.repos.d/mysql-8.0.repo \ && dnf makecache \ && dnf install mysql-community-server -y --disablerepo=AppStream \ @@ -52,7 +42,7 @@ character-set-server = utf8mb4\n\ default-storage-engine = innodb\n\ slow-query-log = TRUE\n\ slow-query-log-file = /var/log/mysql/slow.log\n\ -default-authentication-plugin = mysql_native_password\n\ +authentication-policy = mysql_native_password\n\ lower-case-table-names = 1\n\ \n\ [mysqladmin]\n\