diff --git a/admin/admin-web/pom.xml b/admin/admin-web/pom.xml index 8c3b2918..110dc962 100644 --- a/admin/admin-web/pom.xml +++ b/admin/admin-web/pom.xml @@ -30,6 +30,8 @@ mysql mysql-connector-java + + 8.0.33 com.github.ben-manes.caffeine diff --git a/docker/base/amd64/Dockerfile b/docker/base/amd64/Dockerfile index b10f2aed..845fa732 100644 --- a/docker/base/amd64/Dockerfile +++ b/docker/base/amd64/Dockerfile @@ -1,7 +1,5 @@ # amd64 FROM centos:centos7.9.2009@sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f -# arm64 -#FROM centos:centos7.9.2009@sha256:73f11afcbb50d8bc70eab9f0850b3fa30e61a419bc48cf426e63527d14a8373b ARG jdk_rpm ARG platform_env diff --git a/docker/base/amd64/Dockerfile_admin b/docker/base/amd64/Dockerfile_admin index 35a628f1..e1e3a680 100644 --- a/docker/base/amd64/Dockerfile_admin +++ b/docker/base/amd64/Dockerfile_admin @@ -7,7 +7,8 @@ RUN \ groupadd -r mysql && useradd -r -g mysql mysql && \ wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm && \ rpm -ivh mysql80-community-release-el7-3.noarch.rpm && \ - yum install mysql-community-server --nogpgcheck -y && \ + yum install sudo mysql-community-server --nogpgcheck -y && \ + rm -f mysql80-community-release-el7-3.noarch.rpm && \ yum clean all && \ true diff --git a/docker/base/arm64/Dockerfile_admin b/docker/base/arm64/Dockerfile_admin index dc88b8b8..5f9cdf37 100644 --- a/docker/base/arm64/Dockerfile_admin +++ b/docker/base/arm64/Dockerfile_admin @@ -7,7 +7,8 @@ RUN \ groupadd -r mysql && useradd -r -g mysql mysql && \ wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm && \ rpm -ivh mysql80-community-release-el7-3.noarch.rpm && \ - yum install mysql-community-server --nogpgcheck -y && \ + yum install sudo mysql-community-server-8.0.32 --nogpgcheck -y && \ + rm -f mysql80-community-release-el7-3.noarch.rpm && \ yum clean all && \ true diff --git a/docker/image/app.sh b/docker/image/app.sh index 30c76d50..821cd58e 100755 --- a/docker/image/app.sh +++ b/docker/image/app.sh @@ -1,5 +1,5 @@ #!/bin/bash -set -e +set +e source /etc/profile export JAVA_HOME=/usr/java/latest diff --git a/docker/image/app_admin.sh b/docker/image/app_admin.sh index 156b9f0d..dd02632c 100755 --- a/docker/image/app_admin.sh +++ b/docker/image/app_admin.sh @@ -1,5 +1,5 @@ #!/bin/bash -set -e +set +e source /etc/profile export JAVA_HOME=/usr/java/latest @@ -94,37 +94,45 @@ function start_mysql() { MYSQL_ROOT_PASSWORD=Hello1234 # connect local mysql if [ -z "$(ls -A /var/lib/mysql)" ]; then - mysql_install_db --user=mysql --datadir=/var/lib/mysql 1>>/tmp/start.log 2>&1 - # These statements _must_ be on individual lines, and _must_ end with - # semicolons (no line breaks or comments are permitted). - # TODO proper SQL escaping on ALL the things D: TEMP_FILE='/tmp/init.sql' - echo "update mysql.user set password=password('${MYSQL_ROOT_PASSWORD}') where user='root';" >> $TEMP_FILE - echo "grant all privileges on *.* to 'root'@'%' WITH GRANT OPTION ;" >> $TEMP_FILE + echo "ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}';" >> $TEMP_FILE + /usr/sbin/mysqld --initialize --user=mysql --datadir=/var/lib/mysql --init-file=/tmp/init.sql --default-authentication-plugin=mysql_native_password 1>>/tmp/start.log 2>&1 + echo "default-authentication-plugin=mysql_native_password" >> /etc/my.cnf + # systemctl start mysqld + sudo -u mysql /usr/sbin/mysqld & + sleep 5 + checkStart "mysql" "echo 'show status' | mysql -b -s -h127.0.0.1 -P3306 -uroot -p${MYSQL_ROOT_PASSWORD} | grep -c Uptime" 30 + # init file + rm -f $TEMP_FILE echo "create database if not exists $MYSQL_DATABASE ;" >> $TEMP_FILE echo "create user $MYSQL_USER identified by '$MYSQL_USER_PASSWORD' ;" >> $TEMP_FILE - echo "grant all privileges on $MYSQL_DATABASE.* to '$MYSQL_USER'@'%' identified by '$MYSQL_USER_PASSWORD' ;" >> $TEMP_FILE - echo "grant all privileges on $MYSQL_DATABASE.* to '$MYSQL_USER'@'localhost' identified by '$MYSQL_USER_PASSWORD' ;" >> $TEMP_FILE + echo "grant all privileges on $MYSQL_DATABASE.* to '$MYSQL_USER'@'%' ;" >> $TEMP_FILE echo "flush privileges;" >> $TEMP_FILE - service mysqld start - checkStart "mysql" "echo 'show status' | mysql -s -h127.0.0.1 -P3306 -uroot | grep -c Uptime" 30 - mysql -h127.0.0.1 -uroot -e "source $TEMP_FILE" 1>>/tmp/start.log 2>&1 - + # init user + cmd="mysql -h127.0.0.1 -uroot -p${MYSQL_ROOT_PASSWORD} -e 'source $TEMP_FILE' 1>>/tmp/start.log 2>&1" + eval $cmd + /bin/rm -f /tmp/init.sql + # init table cmd="mysql -h127.0.0.1 -u$MYSQL_USER -p$MYSQL_USER_PASSWORD $MYSQL_DATABASE -e 'source /home/admin/canal-admin/conf/canal_manager.sql' 1>>/tmp/start.log 2>&1" eval $cmd /bin/rm -f /home/admin/canal-admin/conf/canal_manager.sql else + echo "recover mysql ..." chown -R mysql:mysql /var/lib/mysql - service mysqld start + # systemctl start mysqld + rm -f /var/lib/mysql/mysql.sock.lock + sudo -u mysql /usr/sbin/mysqld & + sleep 5 #check start - checkStart "mysql" "echo 'show status' | mysql -b -s -h127.0.0.1 -P3306 -uroot -p$MYSQL_ROOT_PASSWORD | grep -c Uptime" 30 + checkStart "mysql" "echo 'show status' | mysql -b -s -h127.0.0.1 -P3306 -uroot -p${MYSQL_ROOT_PASSWORD} | grep -c Uptime" 30 fi } function stop_mysql() { echo "stop mysql ..." # stop mysql - service mysqld stop + # systemctl stop mysqld + ps auxf | grep mysqld | grep -v grep | awk '{print $2}' | xargs kill echo "stop mysql successful ..." } @@ -137,7 +145,7 @@ function start_admin() { su admin -c 'cd /home/admin/canal-admin/bin/ && sh restart.sh 1>>/tmp/start.log 2>&1' sleep 5 #check start - checkStart "canal" "nc 127.0.0.1 $serverPort -w 1 -z | wc -l" 30 + checkStart "canal" "nc 127.0.0.1 $serverPort -w 1 -zv 2>/tmp/nc.out && cat /tmp/nc.out | grep -c Connected" 30 } function stop_admin() {