本文将分享DataKit迁移MySQL到openGauss的项目实战,供广大openGauss爱好者参考。
https://www.openeuler.org/zh/download
https://support.huawei.com/enterprise/zh/doc/EDOC1100332931/1a643956
https://support.huawei.com/enterprise/zh/doc/EDOC1100332931/fddc1451
[root@olnode01 tmp]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
[root@olnode01 tmp]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2023-12-07 20:57:23 CST; 40min ago Docs: man:firewalld(1) Main PID: 1013 (firewalld) Tasks: 2 Memory: 33.2M CGroup: /system.slice/firewalld.service └─1013 /usr/bin/python3 /usr/sbin/firewalld --nofork --nopid Dec 07 20:57:23 olnode01.bluemoon.ltd systemd[1]: Starting firewalld - dynamic firewall daemon... Dec 07 20:57:23 olnode01.bluemoon.ltd systemd[1]: Started firewalld - dynamic firewall daemon. [root@olnode01 tmp]# systemctl disable firewalld Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@olnode01 tmp]# systemctl stop firewalld [root@olnode01 tmp]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1) Dec 07 20:57:23 olnode01.bluemoon.ltd systemd[1]: Starting firewalld - dynamic firewall daemon... Dec 07 20:57:23 olnode01.bluemoon.ltd systemd[1]: Started firewalld - dynamic firewall daemon. Dec 07 21:37:57 olnode01.bluemoon.ltd systemd[1]: Stopping firewalld - dynamic firewall daemon... Dec 07 21:37:58 olnode01.bluemoon.ltd systemd[1]: firewalld.service: Succeeded. Dec 07 21:37:58 olnode01.bluemoon.ltd systemd[1]: Stopped firewalld - dynamic firewall daemon.
echo export LANG=en_US.UTF-8 >> /etc/profile
默认RemoveIPC=yes,表示当用户退出时,会删除该用户的共享内存段和信号量。
systemctl daemon-reload systemctl restart systemd-logind loginctl show-session | grep RemoveIPC systemctl show systemd-logind | grep RemoveIPC
echo never >> /sys/kernel/mm/transparent_hugepage/defrag echo never >> /sys/kernel/mm/transparent_hugepage/enabled echo 'echo never >> /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.d/rc.local echo 'echo never >> /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local sh /etc/rc.d/rc.local
yum install libaio-devel flex bison ncurses-devel glibc-devel patch readline-devel libnsl -y yum install tar vim java sysstat -y # yum remove java-1.8* yum remove java-1.7* yum install -y java-11-openjdk.x86_64 ava-11-openjdk-devel.x86_64 java-11-openjdk-headless.x86_64 java-11-openjdk-devel.x86_64
omm soft nproc 16384 omm hard nproc 16384 omm soft nofile 65536 omm hard nofile 65536 omm soft memlock 4000000 omm hard memlock 4000000
sysctl -p
[omm@olnode01 simpleInstall]$ rpm -qa|grep readline readline-8.0-4.oe1.x86_64 readline-devel-8.0-4.oe1.x86_64 [omm@olnode01 simpleInstall]$ ldconfig -p|grep readline libreadline.so.8 (libc6,x86-64) => /lib64/libreadline.so.8 libreadline.so (libc6,x86-64) => /lib64/libreadline.so libguilereadline-v-18.so.18 (libc6,x86-64) => /lib64/libguilereadline-v-18.so.18 libguilereadline-v-18.so (libc6,x86-64) => /lib64/libguilereadline-v-18.so
cd /lib64 ln -s libreadline.so.8 libreadline.so.7
https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.0/x86_openEuler/openGauss-5.0.0-openEuler-64bit-all.tar.gz
下面这个要注意了,一定要下载5.1版本的,5.0版本的运维插件要自己安装。
groupadd dbgroup
useradd -g dbgroup omm passwd omm
# tar -jxf openGauss-x.x.x-操作系统-64bit.tar.bz2 -C /opt/software/openGauss gzip -d openGauss-5.0.0-openEuler-64bit-all.tar.gz tar -xvf openGauss-5.0.0-openEuler-64bit-all.tar -C /opt/software/openGauss/ tar -jxvf openGauss-5.0.0-openEuler-64bit.tar.bz2
cd /opt/software/openGauss/simpleInstall
# 修改目录权限后,切换到普通用户,否则会提示:Error: can not install openGauss with root sh install.sh -w omm@1234
上述命令中,-w是指初始化数据库密码(gs_initdb指定),安全需要必须设置。
centos7.8报sem不足:
sysctl -w kernel.sem="250 85000 250 330"
vi /home/omm/.bashrc
# User specific aliases and functions export GAUSSHOME=/opt/software/openGauss export PATH=$GAUSSHOME/bin:$PATH export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH export GS_CLUSTER_NAME=dbCluster ulimit -n 1000000
ps ux | grep gaussdb gs_ctl query -D /opt/software/openGauss/data/single_node
omm 24209 11.9 1.0 1852000 355816 pts/0 Sl 01:54 0:33 /opt/software/openGauss/bin/gaussdb -D /opt/software/openGauss/single_node omm 20377 0.0 0.0 119880 1216 pts/0 S+ 15:37 0:00 grep --color=auto gaussdb
gs_ctl query ,datadir is /opt/software/openGauss/data/single_node HA state: local_role : Normal static_connections : 0 db_state : Normal detail_information : Normal Senders info: No information Receiver info: No information
[omm@olnode01 simpleInstall]$ sh install.sh -w omm@1234 [step 1]: check parameter [step 2]: check install env and os setting install.sh: line 91: netstat: command not found [step 3]: change_gausshome_owner [step 4]: set environment variables /etc/profile.d/system-info.sh: line 26: bc: command not found /etc/profile.d/system-info.sh: line 35: bc: command not found /home/omm/.bashrc: line 11: ulimit: open files: cannot modify limit: Operation not permitted [step 6]: init datanode The files belonging to this database system will be owned by user "omm". This user must also own the server process. The database cluster will be initialized with locale "en_US.UTF-8". The default database encoding has accordingly been set to "UTF8". The default text search configuration will be set to "english". creating directory /opt/software/openGauss/data/single_node ... ok creating subdirectories ... in ordinary occasionok creating configuration files ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 1024MB Begin init undo subsystem meta. [INIT UNDO] Init undo subsystem meta successfully. creating template1 database in /opt/software/openGauss/data/single_node/base/1 ... The core dump path is an invalid directory 2023-12-07 22:12:02.098 [unknown] [unknown] localhost 139730482409408 0[0:0#0] [BACKEND] WARNING: macAddr is 12/699528221, sysidentifier is 797105/4095585850, randomNum is 4069764666 ok initializing pg_authid ... ok setting password ... ok initializing dependencies ... ok loading PL/pgSQL server-side language ... ok creating system views ... ok creating performance views ... ok loading system objects' descriptions ... ok creating collations ... ok creating conversions ... ok creating dictionaries ... ok setting privileges on built-in objects ... ok initialize global configure for bucketmap length ... ok creating information schema ... ok loading foreign-data wrapper for distfs access ... ok loading foreign-data wrapper for log access ... ok loading hstore extension ... ok loading foreign-data wrapper for MOT access ... ok loading security plugin ... ok update system tables ... ok creating snapshots catalog ... ok vacuuming database template1 ... ok copying template1 to template0 ... ok copying template1 to postgres ... ok freezing database template0 ... ok freezing database template1 ... ok freezing database postgres ... ok WARNING: enabling "trust" authentication for local connections You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run gs_initdb. Success. You can now start the database server of single node using: gaussdb -D /opt/software/openGauss/data/single_node --single_node or gs_ctl start -D /opt/software/openGauss/data/single_node -Z single_node -l logfile [step 7]: start datanode .....ECUTOR] ACTION: Please refer to backend log for more details. [2023-12-07 22:12:16.581][18900][][gs_ctl]: done [2023-12-07 22:12:16.581][18900][][gs_ctl]: server started (/opt/software/openGauss/data/single_node) import sql file Would you like to create a demo database (yes/no)? yes Load demoDB [school,finance] success. [complete successfully]: You can start or stop the database server using: gs_ctl start|stop|restart -D $GAUSSHOME/data/single_node -Z single_node
vi /usr/lib/systemd/system/opengauss.service
[Unit] Description=openGauss #当前服务的简单描述 Documentation=openGauss Server #服务配置文件的位置 After=syslog.target #在某服务之后启动 After=network.target [Service] Type=forking #ExecStart字段将以fork()方式启动,后台运行 #服务运行的用户 User=omm #服务运行的用户组 Group=omm Environment=PGDATA=/opt/software/openGauss/data Environment=GAUSSHOME=/opt/software/openGauss Environment=LD_LIBRARY_PATH=/opt/software/openGauss/lib #启动服务的命令,可以是可执行程序、系统命令或shell脚本,必须是绝对路径。 ExecStart=/opt/software/openGauss/bin/gs_ctl start -D /opt/software/openGauss/data/single_node #重启服务的命令,可以是可执行程序、系统命令或shell脚本,必须是绝对路径。 ExecReload=/opt/software/openGauss/bin/gs_ctl restart -D /opt/software/openGauss/data/single_node #停止服务的命令,可以是可执行程序、系统命令或shell脚本,必须是绝对路径。 ExecStop=/opt/software/openGauss/bin/gs_ctl stop -D /opt/software/openGauss/data/single_node #Systemd停止sshd服务方式 mixed:主进程将收到SIGTERM信号,子进程收到SIGKILL信号 KillMode=mixed KillSignal=SIGINT TimeoutSec=0 [Install] WantedBy=multi-user.target
[Unit] Description=openGauss Documentation=openGauss Server After=syslog.target After=network.target [Service] Type=forking User=omm Group=dbgroup Environment=PGDATA=/opt/software/openGauss/data Environment=GAUSSHOME=/opt/software/openGauss Environment=LD_LIBRARY_PATH=/opt/software/openGauss/lib ExecStart=/opt/software/openGauss/bin/gs_ctl start -D /opt/software/openGauss/data/single_node ExecReload=/opt/software/openGauss/bin/gs_ctl restart -D /opt/software/openGauss/data/single_node ExecStop=/opt/software/openGauss/bin/gs_ctl stop -D /opt/software/openGauss/data/single_node KillMode=mixed KillSignal=SIGINT TimeoutSec=0 [Install] WantedBy=multi-user.target
#重新加载配置文件 systemctl daemon-reload #启用opengauss服务 systemctl enable opengauss #执行opengauss服务 systemctl start opengauss #查看opengauss服务的状态 systemctl status opengauss #停止openGauss服务 systemctl stop opengauss
gs_guc set -D /opt/software/openGauss/data/single_node -h "host all all 0.0.0.0/0 sha256" gs_guc set -D /opt/software/openGauss/data/single_node -h "host replication all 0.0.0.0/0 sha256"
[omm@hp400 single_node]$ cat pg_hba.conf|egrep -v "^#|^$" local all all trust host all all 127.0.0.1/32 trust host all all 0.0.0.0/0 sha256 host all all ::1/128 trust host replication all 0.0.0.0/0 sha256
gs_guc set -D /opt/software/openGauss/data/single_node -c "listen_addresses = '*'" gs_guc set -D /opt/software/openGauss/data/single_node -c "wal_level = logical"
[omm@hp400 single_node]$ egrep "listen_address|wal_level" postgresql.conf listen_addresses = '*' # what IP address(es) to listen on; wal_level = logical # minimal, archive, hot_standby or logical
systemctl start opengauss
gsql -d postgres -p 5432 -r openGauss=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+-------+----------+-------------+-------------+------------------- finance | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | school | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/omm + | | | | | omm=CTc/omm template1 | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/omm + | | | | | omm=CTc/omm (5 rows)
create user datakit identified by 'datakit@1234'; grant all privilege to datakit; -- alter user datakit sysadmin create database datakit;
create database world with dbcompatibility='b';
gsql -d world -p 5432 -r
mkdir -p /opt/datakit/datakit5.1/{logs,config,ssl,files}
tar -zxvf Datakit-5.1.0.tar.gz -C /opt/datakit/datakit5.1
修改文件目录以及连接信息
url: jdbc:opengauss://ip:port/database?currentSchema=public username: dbuser password: dbpassword 修改为: jdbc:opengauss://127.0.0.1:5432/datakitdb?currentSchema=public username: datakit password: datakit@1234
system: # File storage path defaultStoragePath: /opt/datakit/datakit5.1/files # Whitelist control switch whitelist: enabled: false server: port: 9494 ssl: key-store: /opt/datakit/datakit5.1/ssl/keystore.p12 key-store-password: 123456 key-store-type: PKCS12 enabled: true servlet: context-path: / logging: file: path: /opt/datakit/datakit5.1/logs/ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: org.opengauss.Driver url: jdbc:opengauss://127.0.0.1:5432/datakit?currentSchema=public&batchMode=off username: datakit password: datakit@1234 druid: test-while-idle: true test-on-borrow: true validation-query: "select 1" validation-query-timeout: 10000 connection-error-retry-attempts: 0 break-after-acquire-failure: true max-wait: 6000 keep-alive: true max-active: 30 min-evictable-idle-time-millis: 600000 management: server: port: 9494
密码要和上面的配置文件一致
keytool -genkey -noprompt \ -dname "CN=opengauss, OU=opengauss, O=opengauss, L=Beijing, S=Beijing, C=CN"\ -alias opengauss\ -storetype PKCS12 \ -keyalg RSA \ -keysize 2048 \ -keystore /opt/datakit/datakit5.1/ssl/keystore.p12 \ -validity 3650 \ -storepass 123456
useradd ops chown -R ops:ops /opt/datakit
cd /opt/datakit/datakit5.1 && nohup java -Xms2048m -Xmx4096m -jar /opt/datakit/datakit5.1/openGauss-datakit-5.1.0.jar --spring.profiles.active=temp > /opt/datakit/datakit5.1/logs/datakit.out 2>&1 &
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm rpm -Uvh mysql57-community-release-el7-10.noarch.rpm yum install -y mysql-community-server --nogpgcheck
systemctl start mysqld.service
systemctl status mysqld.service
[root@mysqldb log]# cat mysqld.log |grep pass 2023-12-24T13:10:12.643017Z 1 [Note] A temporary password is generated for root@localhost: j8T(quBRT.K2 [root@mysqldb mysqld]# mysql -uroot -p mysql> set global validate_password_policy=0; Query OK, 0 rows affected (0.00 sec) mysql> set global validate_password_length=1; Query OK, 0 rows affected (0.00 sec) mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'datakit@1234'; Query OK, 0 rows affected (0.00 sec)
wget https://downloads.mysql.com/docs/world-db.tar.gz
source /tmp/world-db/world.sql
grant all on *.* to root@'%' identified by 'datakit@1234';
tid_mode = ON enforce_gtid_consistency = ON character_set_server = UTF8MB4 server-id = 170 log-bin=on log_bin_basename=/var/lib/mysql/mysql-bin log_bin_index=/var/lib/mysql/mysql-bin.index
yum install -y java-11-openjdk.x86_64 ava-11-openjdk-devel.x86_64 java-11-openjdk-headless.x86_64 java-11-openjdk-devel.x86_64
默认登陆账号密码:admin/admin123
https://cloud.tencent.com/developer/article/2368209