暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GreatSQL用户实践一:龙蜥Anolis8.9部署GreatSQL 8.0.32-26-部署数据库

原创 Tonyhacks 2024-10-08
170

查看系统信息

[root@GreatSQL01 ~]# cat /etc/anolis-release
Anolis OS release 8.9
[root@GreatSQL01 ~]# getconf GNU_LIBC_VERSION
glibc 2.28
[root@GreatSQL01 ~]# 

关闭防火墙

[root@GreatSQL01 ~]# systemctl stop firewalld ; systemctl disable firewalld Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@GreatSQL01 ~]#

关闭selinux

[root@GreatSQL01 ~]# setenforce 0 ;sed -i '/^SELINUX=/c'SELINUX=disabled /etc/selinux/config setenforce: SELinux is disabled [root@GreatSQL01 ~]#

修改磁盘IO调度算法

SSD或高速缓存设备选择noop,机械磁盘选择deadline

[root@GreatSQL01 ~]# cat /sys/block/sda/queue/scheduler [none] mq-deadline kyber bfq [root@GreatSQL01 ~]# echo mq-deadline > /sys/block/sda/queue/scheduler [root@GreatSQL01 ~]# cat /sys/block/sda/queue/scheduler [mq-deadline] kyber bfq none [root@GreatSQL01 ~]# echo "echo mq-deadline > /sys/block/sda/queue/scheduler" >> /etc/rc.local

确认CPU性能模式设置

cpupower frequency-info --policy

注意 如果输出内容不是 The governor “performance” 而是 The governor “powersave” 的话,则要注意了。 The governor “powersave” 表示 cpufreq 的节能策略使用 powersave,需要调整为 performance 策略。 如果是虚拟机或者云主机,则不需要调整,命令输出通常为 Unable to determine current policy。

关闭透明大页

[root@GreatSQL01 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled [root@GreatSQL01 ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag [root@GreatSQL01 ~]# echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local [root@GreatSQL01 ~]# echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.local [root@GreatSQL01 ~]#

内核优化

echo "fs.file-max = 1000000" >> /etc/sysctl.conf
echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies = 0" >> /etc/sysctl.conf
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
echo "vm.swappiness = 3" >> /etc/sysctl.conf
sysctl -p

修改mysql用户使用资源上限

[root@GreatSQL01 ~]# echo -e "mysql soft nofile 65535\nmysql hard nofile 65535\nmysql soft stack 32768\nmysql hard stack 32768\nmysql soft nproc 65535\nmysql hard nproc 65535" | tee -a /etc/security/limits.conf mysql soft nofile 65535 mysql hard nofile 65535 mysql soft stack 32768 mysql hard stack 32768 mysql soft nproc 65535 mysql hard nproc 65535

安装依赖包

yum install -y wget unzip telnet lrzsz mlocate pkg-config perl libaio-devel numactl-devel numactl-libs net-tools perf sysstat iotop tmux openssl openssl-devel perl-Data-Dumper perl-Digest-MD5 python2 perl-JSON perl-Test-Simple

启动MySQL时加载 jemalloc 动态库

yum install -y epel-release 
yum -y install jemalloc jemalloc-devel

建议采用Jemalloc代替glibc自带的malloc库,其优势在于减少内存碎片和提升高并发场景下内存的分配效率,提高内存管理效率的同时还能降低数据库运行时发生OOM的风险。

添加/修改系统文件 /etc/sysconfig/mysql

LD_PRELOAD=/usr/lib64/libjemalloc.so THP_SETTING=never

配置NTP服务器

yum install chrony -y

配置chrony并重启

vi /etc/chrony.conf systemctl restart chronyd systemctl enable chronyd

查看同步状态

chronyc sources -v

下载安装介质

wget https://product.greatdb.com/GreatSQL-8.0.32-26/GreatSQL-8.0.32-26-Linux-glibc2.28-x86_64.tar.xz

生产环境需配置数据盘

LABEL=/data /data xfs defaults,noatime,nodiratime,inode64 0 0

解压安装介质

tar -xvf GreatSQL-8.0.32-26-Linux-glibc2.28-x86_64.tar.xz -C /data
mv /data/GreatSQL-8.0.32-26-Linux-glibc2.28-x86_64 /data/GreatSQL

创建MySQL用户及用户组

groupadd mysql useradd -r -g mysql -s /bin/false mysql

创建目录并授权

mkdir -p /data/GreatSQL/data chown mysql:mysql /data/GreatSQL/data

设置环境变量

export PATH=$PATH:/data/GreatSQL/bin echo 'export PATH=$PATH:/data/GreatSQL/bin' >> ~/.bash_profile

配置 /etc/my.cnf 配置文件

[client] socket = /data/GreatSQL/data/mysql.sock [mysql] loose-skip-binary-as-hex prompt = "(\\D)[\\u@GreatSQL][\\d]>" no-auto-rehash [mysqld] user = mysql port = 3306 server_id = 3306 basedir = /data/GreatSQL datadir = /data/GreatSQL/data socket = /data/GreatSQL/data/mysql.sock pid-file = mysql.pid character-set-server = UTF8MB4 skip_name_resolve = ON default_time_zone = "+8:00" bind_address = "0.0.0.0" secure_file_priv = /data/GreatSQL/data # Performance lock_wait_timeout = 3600 open_files_limit = 65535 back_log = 1024 max_connections = 512 max_connect_errors = 1000000 table_open_cache = 1024 table_definition_cache = 1024 thread_stack = 512K sort_buffer_size = 4M join_buffer_size = 4M read_buffer_size = 8M read_rnd_buffer_size = 4M bulk_insert_buffer_size = 64M thread_cache_size = 768 interactive_timeout = 600 wait_timeout = 600 tmp_table_size = 32M max_heap_table_size = 32M max_allowed_packet = 64M net_buffer_shrink_interval = 180 sql_generate_invisible_primary_key = ON loose-lock_ddl_polling_mode = ON loose-lock_ddl_polling_runtime = 200 # Logs log_timestamps = SYSTEM log_error = error.log log_error_verbosity = 3 slow_query_log = ON log_slow_extra = ON slow_query_log_file = slow.log long_query_time = 0.01 log_queries_not_using_indexes = ON log_throttle_queries_not_using_indexes = 60 min_examined_row_limit = 100 log_slow_admin_statements = ON log_slow_replica_statements = ON log_slow_verbosity = FULL log_bin = binlog binlog_format = ROW sync_binlog = 1 binlog_cache_size = 4M max_binlog_cache_size = 2G max_binlog_size = 1G binlog_space_limit = 500G binlog_rows_query_log_events = ON binlog_expire_logs_seconds = 604800 binlog_checksum = CRC32 gtid_mode = ON enforce_gtid_consistency = ON # Replication relay-log = relaylog relay_log_recovery = ON replica_parallel_type = LOGICAL_CLOCK replica_parallel_workers = 4 binlog_transaction_dependency_tracking = WRITESET replica_preserve_commit_order = ON replica_checkpoint_period = 2 loose-rpl_read_binlog_speed_limit = 100 # MGR loose-plugin_load_add = 'mysql_clone.so' loose-plugin_load_add = 'group_replication.so' loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa1" loose-group_replication_local_address = "192.168.116.41:33061" loose-group_replication_group_seeds = "192.168.116.41:33061,192.168.116.42:33061,192.168.116.43:33061" loose-group_replication_communication_stack = "XCOM" loose-group_replication_recovery_use_ssl = OFF loose-group_replication_ssl_mode = DISABLED loose-group_replication_start_on_boot = OFF loose-group_replication_bootstrap_group = OFF loose-group_replication_exit_state_action = READ_ONLY loose-group_replication_flow_control_mode = "DISABLED" loose-group_replication_single_primary_mode = ON loose-group_replication_enforce_update_everywhere_checks = OFF loose-group_replication_majority_after_mode = ON loose-group_replication_communication_max_message_size = 10M loose-group_replication_arbitrator = OFF loose-group_replication_single_primary_fast_mode = 1 loose-group_replication_request_time_threshold = 100 loose-group_replication_primary_election_mode = GTID_FIRST loose-group_replication_unreachable_majority_timeout = 0 loose-group_replication_member_expel_timeout = 5 loose-group_replication_autorejoin_tries = 288 loose-group_replication_recovery_get_public_key = ON loose-group_replication_donor_threshold = 100 report_host = "192.168.116.41" # InnoDB innodb_buffer_pool_size = 1G innodb_buffer_pool_instances = 8 innodb_data_file_path = ibdata1:12M:autoextend innodb_flush_log_at_trx_commit = 1 innodb_log_buffer_size = 32M innodb_redo_log_capacity = 6G innodb_doublewrite_files = 2 innodb_max_undo_log_size = 4G innodb_io_capacity = 4000 innodb_io_capacity_max = 8000 innodb_open_files = 65535 innodb_flush_method = O_DIRECT innodb_lru_scan_depth = 4000 innodb_lock_wait_timeout = 10 innodb_rollback_on_timeout = ON innodb_print_all_deadlocks = ON innodb_online_alter_log_max_size = 4G innodb_print_ddl_logs = ON innodb_status_file = ON innodb_status_output = OFF innodb_status_output_locks = ON innodb_sort_buffer_size = 64M innodb_adaptive_hash_index = OFF innodb_numa_interleave = OFF innodb_spin_wait_delay = 20 innodb_print_lock_wait_timeout_info = ON innodb_change_buffering = none kill_idle_transaction = 300 innodb_data_file_async_purge = ON #innodb monitor settings #innodb_monitor_enable = "module_innodb,module_server,module_dml,module_ddl,module_trx,module_os,module_purge,module_log,module_lock,module_buffer,module_index,module_ibuf_system,module_buffer_page,module_adaptive_hash" #pfs settings performance_schema = 1 #performance_schema_instrument = '%memory%=on' performance_schema_instrument = '%lock%=on'

vi /lib/systemd/system/greatsql.service

[Unit] Description=GreatSQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] # some limits # file size LimitFSIZE=infinity # cpu time LimitCPU=infinity # virtual memory size LimitAS=infinity # open files LimitNOFILE=65535 # processes/threads LimitNPROC=65535 # locked memory LimitMEMLOCK=infinity # total threads (user+kernel) TasksMax=infinity TasksAccounting=false User=mysql Group=mysql Type=notify TimeoutSec=0 PermissionsStartOnly=true ExecStartPre=/data/GreatSQL/bin/mysqld_pre_systemd ExecStart=/data/GreatSQL/bin/mysqld $MYSQLD_OPTS EnvironmentFile=-/etc/sysconfig/mysql Restart=on-failure RestartPreventExitStatus=1 Environment=MYSQLD_PARENT_PID=1 PrivateTmp=false

修改脚本

sed -i 's#/usr/local/GreatSQL-8.0.32-26-Linux-glibc2.28-x86_64#/data/GreatSQL#g' /data/GreatSQL/bin/mysqld_pre_systemd sed -i 's#/var/lib#/data/GreatSQL#g' /data/GreatSQL/bin/mysqld_pre_systemd sed -i 's#/var/log/mysql#/data/GreatSQL/data#g' /data/GreatSQL/bin/mysqld_pre_systemd

执行命令重载systemd,加入 greatsql 服务,如果没问题就不会报错:

systemctl daemon-reload

启动GreatSQL

systemctl start greatsql

登录GreatSQL

[root@GreatSQL01 data]# grep -i root /data/GreatSQL/data/error.log 2024-09-29T15:47:51.098861+08:00 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Kpw-WNar2q9r [root@GreatSQL01 data]# mysql -uroot -p"Kpw-WNar2q9r" mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.32-26 Copyright (c) 2021-2024 GreatDB Software Co., Ltd Copyright (c) 2009-2024 Percona LLC and/or its affiliates Copyright (c) 2000, 2024, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. (Sun Sep 29 16:03:57 2024)[root@GreatSQL][(none)]> (Sun Sep 29 16:03:58 2024)[root@GreatSQL][(none)]> (Sun Sep 29 16:03:58 2024)[root@GreatSQL][(none)]>show databases; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. (Sun Sep 29 16:04:09 2024)[root@GreatSQL][(none)]>ALTER USER root@'localhost' IDENTIFIED BY 'GreatSQL@2024'; Query OK, 0 rows affected (0.01 sec) (Sun Sep 29 16:05:29 2024)[root@GreatSQL][(none)]>status; -------------- mysql Ver 8.0.32-26 for Linux on x86_64 (GreatSQL, Release 26, Revision a68b3034c3d) Connection id: 10 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 8.0.32-26 Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 UNIX socket: /data/GreatSQL/data/mysql.sock Uptime: 14 min 49 sec Threads: 4 Questions: 12 Slow queries: 0 Opens: 134 Flush tables: 3 Open tables: 51 Queries per second avg: 0.013 -------------- (Sun Sep 29 16:06:46 2024)[root@GreatSQL][(none)]>

GreatSQL数据库安装并初始化完毕。

最后修改时间:2024-10-08 20:56:31
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论