欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答

  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

1、关于systemd

systemd 是Linux系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程,systemd被设计用来改进原来sysvinit中的多个缺点。

CentOS 7的systemd服务程序脚本存放在 /usr/lib/systemd/目录下,并区分 system 和 user,每一个服务程序脚本以 .service 结尾,例如 /usr/lib/systemd/system/sshd.service。

2、编辑systemd服务程序脚本

设定 GreatSQL 二进制文件放在 /usr/local/GreatSQL-8.0.23-14/ 目录下,即设定 basedir 为此目录,先进入到这个工作目录中。

  1. [root@greatsql~]# cd /usr/local/GreatSQL-8.0.23-14/

复制 support-files/greatsql.server 程序脚本到 /usr/lib/systemd/system/ 目录下:

  1. [root@greatsql~]# cp -f ./support-files/greatsql.server /usr/lib/systemd/system/

该脚本内容如下,基本上不需要再修改什么内容:

  1. [root@greatsql~]# cat /usr/lib/systemd/system/greatsql.service
  2. [Unit]
  3. Description=GreatSQL Server
  4. Documentation=man:mysqld(8)
  5. Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
  6. After=network.target
  7. After=syslog.target
  8. [Install]
  9. WantedBy=multi-user.target
  10. [Service]
  11. User=mysql
  12. Group=mysql
  13. Type=notify
  14. TimeoutSec=0
  15. PermissionsStartOnly=true
  16. ExecStartPre=/usr/local/GreatSQL-8.0.23-14/bin/mysqld_pre_systemd
  17. ExecStart=/usr/local/GreatSQL-8.0.23-14/bin/mysqld $MYSQLD_OPTS
  18. EnvironmentFile=-/etc/sysconfig/mysql
  19. LimitNOFILE = 10000
  20. Restart=on-failure
  21. RestartPreventExitStatus=1
  22. Environment=MYSQLD_PARENT_PID=1
  23. PrivateTmp=false

3、准备my.cnf及其他配置文件

复制 support-files/my.cnf 到 /etc/ 目录下,替换原来的配置文件(原来的 /etc/my.cnf 建议先备份),并确认 datadir、port、server_id 等参数是否要修改:

  1. [root@greatsql~]# cp -f ./support-files/my.cnf /etc/my.cnf
  2. [root@greatsql~]# cat /etc/my.cnf
  3. #my.cnf
  4. [mysqld]
  5. user = mysql
  6. port = 3306
  7. server_id = 3306
  8. basedir=/usr/local/GreatSQL-8.0.23-14
  9. datadir = /data/GreatSQL
  10. socket = /data/GreatSQL/mysql.sock
  11. pid-file = mysql.pid
  12. character-set-server = UTF8MB4
  13. skip_name_resolve = 1
  14. #若你的MySQL数据库主要运行在境外,请务必根据实际情况调整本参数
  15. default_time_zone = "+8:00"
  16. #performance setttings
  17. lock_wait_timeout = 3600
  18. open_files_limit = 65535
  19. back_log = 1024
  20. max_connections = 512
  21. max_connect_errors = 1000000
  22. table_open_cache = 1024
  23. table_definition_cache = 1024
  24. thread_stack = 512K
  25. sort_buffer_size = 4M
  26. join_buffer_size = 4M
  27. read_buffer_size = 8M
  28. read_rnd_buffer_size = 4M
  29. bulk_insert_buffer_size = 64M
  30. thread_cache_size = 768
  31. interactive_timeout = 600
  32. wait_timeout = 600
  33. tmp_table_size = 32M
  34. max_heap_table_size = 32M
  35. #log settings
  36. log_timestamps = SYSTEM
  37. log_error = /data/GreatSQL/error.log
  38. log_error_verbosity = 3
  39. slow_query_log = 1
  40. log_slow_extra = 1
  41. slow_query_log_file = /data/GreatSQL/slow.log
  42. long_query_time = 0.1
  43. log_queries_not_using_indexes = 1
  44. log_throttle_queries_not_using_indexes = 60
  45. min_examined_row_limit = 100
  46. log_slow_admin_statements = 1
  47. log_slow_slave_statements = 1
  48. log_bin = /data/GreatSQL/binlog
  49. binlog_format = ROW
  50. sync_binlog = 1
  51. binlog_cache_size = 4M
  52. max_binlog_cache_size = 2G
  53. max_binlog_size = 1G
  54. binlog_rows_query_log_events = 1
  55. binlog_expire_logs_seconds = 604800
  56. #MySQL 8.0.22前,想启用MGR的话,需要设置binlog_checksum=NONE才行
  57. binlog_checksum = CRC32
  58. gtid_mode = ON
  59. enforce_gtid_consistency = TRUE
  60. #myisam settings
  61. key_buffer_size = 32M
  62. myisam_sort_buffer_size = 128M
  63. #replication settings
  64. master_info_repository = TABLE
  65. relay_log_info_repository = TABLE
  66. relay_log_recovery = 1
  67. slave_parallel_type = LOGICAL_CLOCK
  68. #可以设置为逻辑CPU数量的2倍
  69. slave_parallel_workers = 64
  70. binlog_transaction_dependency_tracking = WRITESET
  71. slave_preserve_commit_order = 1
  72. slave_checkpoint_period = 2
  73. #mgr settings
  74. loose-plugin_load_add = 'mysql_clone.so'
  75. loose-plugin_load_add = 'group_replication.so'
  76. loose-group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaa1"
  77. #MGR本地节点IP:PORT,请自行替换
  78. loose-group_replication_local_address = "172.16.16.10:33061"
  79. #MGR集群所有节点IP:PORT,请自行替换
  80. loose-group_replication_group_seeds = "172.16.16.10:33061,172.16.16.11:33061,172.16.16.12:33061"
  81. loose-group_replication_start_on_boot = OFF
  82. loose-group_replication_bootstrap_group = OFF
  83. loose-group_replication_exit_state_action = READ_ONLY
  84. loose-group_replication_flow_control_mode = "DISABLED"
  85. loose-group_replication_single_primary_mode = ON
  86. #innodb settings
  87. transaction_isolation = REPEATABLE-READ
  88. innodb_buffer_pool_size = 2G
  89. innodb_buffer_pool_instances = 8
  90. innodb_data_file_path = ibdata1:12M:autoextend
  91. innodb_flush_log_at_trx_commit = 1
  92. innodb_log_buffer_size = 32M
  93. innodb_log_file_size = 1G
  94. innodb_log_files_in_group = 3
  95. innodb_max_undo_log_size = 4G
  96. # 根据您的服务器IOPS能力适当调整
  97. # 一般配普通SSD盘的话,可以调整到 10000 - 20000
  98. # 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000
  99. innodb_io_capacity = 4000
  100. innodb_io_capacity_max = 8000
  101. innodb_open_files = 65535
  102. innodb_flush_method = O_DIRECT
  103. innodb_lru_scan_depth = 4000
  104. innodb_lock_wait_timeout = 10
  105. innodb_rollback_on_timeout = 1
  106. innodb_print_all_deadlocks = 1
  107. innodb_online_alter_log_max_size = 4G
  108. innodb_print_ddl_logs = 1
  109. innodb_status_file = 1
  110. #注意: 开启 innodb_status_output & innodb_status_output_locks 后, 可能会导致log_error文件增长较快
  111. innodb_status_output = 0
  112. innodb_status_output_locks = 1
  113. innodb_sort_buffer_size = 67108864
  114. #innodb monitor settings
  115. innodb_monitor_enable = "module_innodb"
  116. innodb_monitor_enable = "module_server"
  117. innodb_monitor_enable = "module_dml"
  118. innodb_monitor_enable = "module_ddl"
  119. innodb_monitor_enable = "module_trx"
  120. innodb_monitor_enable = "module_os"
  121. innodb_monitor_enable = "module_purge"
  122. innodb_monitor_enable = "module_log"
  123. innodb_monitor_enable = "module_lock"
  124. innodb_monitor_enable = "module_buffer"
  125. innodb_monitor_enable = "module_index"
  126. innodb_monitor_enable = "module_ibuf_system"
  127. innodb_monitor_enable = "module_buffer_page"
  128. innodb_monitor_enable = "module_adaptive_hash"
  129. #pfs settings
  130. performance_schema = 1
  131. #performance_schema_instrument = '%memory%=on'
  132. performance_schema_instrument = '%lock%=on'

再复制 support-files/sysconfig/mysql 文件到 /etc/sysconfig 目录下。

  1. [root@greatsql~]# cp -f ./support-files/sysconfig/mysql /etc/sysconfig/mysql
  2. [root@greatsql~]# cat /etc/sysconfig/mysql
  3. LD_PRELOAD=/usr/lib64/libjemalloc.so.1

这是为了能让GreatSQL启动时加载jemalloc,获得更好的内存管理性能。

4、启动GreatSQL服务

上述准备工作完成后,还要将 GreatSQL 服务正式加载到 systemd 列表中:

  1. [root@greatsql~]# systemctl daemon-reload

这就会自动将GreatSQL这个新服务加载进来了。

然后开始启动服务:

  1. [root@greatsql~]# systemctl start greatsql
  2. #如果加上 .service 后缀也可以,例如
  3. [root@greatsql~]# systemctl start greatsql.service

如果启动失败,可能会输出类似的报错提示:

  1. [root@greatsql~]# systemctl start greatsql
  2. Job for greatsql.service failed because the control process exited with error code. See "systemctl status greatsql.service" and "journalctl -xe" for details.

按照错误提示,执行 systemctl status greatsql.service 或 journalctl -xe 查看失败的原因,亦可查看系统日志 /var/log/messages 或 GreatSQL日志 /data/GreatSQL/error.log 确认失败原因。

第一次会比较慢,因为还要初始化InnoDB系统表空间、redo、undo日志等。初始化时,还会为root生成临时密码,例如这样:

  1. ...
  2. [MY-010454] [Server] A temporary password is generated for root@localhost: dofI,0HE#E>C
  3. ...

首次登入需要用这个密码,并立即修改成新密码,新密码还必须符合安全规范才行,不能是弱密码:

  1. # 先登入
  2. [root@greatsql~]# mysql -uroot -p -S/data/GreatSQL/mysql.sock
  3. Enter password: ************
  4. # 而后修改密码,否则不能做其他操作
  5. [root@GreatSQL][(none)]> ALTER USER CURRENT_USER() IDENTIFIED BY 'GreatSQL3##)^';

这是因为用默认加载了 validate_password 组件(component),对密码有合规性要求。

  1. [root@GreatSQL][(none)]> SELECT * FROM mysql.component;
  2. +--------------+--------------------+------------------------------------+
  3. | component_id | component_group_id | component_urn |
  4. +--------------+--------------------+------------------------------------+
  5. | 1 | 1 | file://component_validate_password |
  6. +--------------+--------------------+------------------------------------+

如果嫌麻烦可以卸载掉(但非常不建议这么做):

  1. [root@GreatSQL][(none)]> UNINSTALL COMPONENT 'file://component_validate_password';

最后,介绍systemctl主要几个的命令:

  • 重载系统服务:systemctl daemon-reload

  • 启用开机启动:systemctl enable greatsql

  • 禁用开机启动:systemctl disable greatsql

  • 启动服务:systemctl start greatsql

  • 停止服务:systemctl stop greatsql

  • 重启服务:systemctl restart greatsql

  • 查看服务状态:systemctl status greatsql

全文完。

Enjoy GreatSQL

文章推荐:

GreatSQL MGR FAQ

https://mp.weixin.qq.com/s/J6wkUpGXw3YkyEUJXiZ9xA

万答#12,MGR整个集群挂掉后,如何才能自动选主,不用手动干预

https://mp.weixin.qq.com/s/07o1poO44zwQIvaJNKEoPA

『2021数据技术嘉年华·ON LINE』:《MySQL高可用架构演进及实践》

https://mp.weixin.qq.com/s/u7k99y6i7riq7ScYs7ySnA

一条sql语句慢在哪之抓包分析

https://mp.weixin.qq.com/s/AYibbzl860D90rOeyjB6IQ

万答#15,都有哪些情况可能导致MGR服务无法启动

https://mp.weixin.qq.com/s/inSGpd0Q_XIl2Mb-VsvNsA

技术分享 | 为什么MGR一致性模式不推荐AFTER

https://mp.weixin.qq.com/s/rNeq479RNsklY1BlfKOsYg

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

Gitee:

https://gitee.com/GreatSQL/GreatSQL

GitHub:

https://github.com/GreatSQL/GreatSQL

Bilibili:

https://space.bilibili.com/1363850082/video

微信&QQ群:

可搜索添加GreatSQL社区助手微信好友,发送验证信息“加群”加入GreatSQL/MGR交流微信群

QQ群:533341697

微信小助手:wanlidbc

本文由博客一文多发平台 OpenWrite 发布!

技术分享 | 将GreatSQL添加到系统systemd服务的更多相关文章

  1. 技术分享 | 自制GreatSQL Docker镜像

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 近期打算制作一个GreatSQL的docker镜像,方便社区用户使用GreatSQL. 制作docker镜像的环境基于Ce ...

  2. 技术分享 | ARM下中标麒麟系统ky10使用Xtrabackup-8.0.25

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 一.需求背景 查询Percona官方手册,Xtrabackup 8.0可以备份M ...

  3. linux 将自己的服务添加到系统service服务

    前言 我们在linux上要启动一个程序得时候, 往往都是要写一堆路径, 找到要启动得服务程序, 再用 ./*** 启动服务. 那么我们有没有快速启动方法吗, 答案是肯定得 service 介绍 官方介 ...

  4. kafka技术分享02--------kafka入门

    kafka技术分享02--------kafka入门 1. 消息系统 ​ 所谓的Messaging System就是一组规范,企业利用这组规范在不同的系统之间传递语义准确对的消息,实现松耦合的异步数据 ...

  5. 技术分享 | 简单测试MySQL 8.0.26 vs GreatSQL 8.0.25的MGR稳定性表现

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. M ...

  6. 技术分享 | Prometheus+Grafana监控MySQL浅析

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 简介 Prometheus 一套开源的监控&报警&时间序列数据库的组合,通常 Kubernetes 中都会 ...

  7. 技术分享 | innodb_buffer_pool_size为什么无法调低至1GB以内

    前言 innodb_buffer_pool_size可以调大,却不能调小至1GB以内,这是为什么? MySQL 版本:5.7.30 测试环境有台 MySQL 服务器反应很慢,检查系统后发现内存使用量已 ...

  8. 技术分享 | check(col_name<>'')为何把空格拒之门外

    1.问题描述 前两天在群里看到同事反馈一个空格问题,大致现象如下: mysql> select @@version; +-----------+ | @@version | +--------- ...

  9. 技术分享 | 在MySQL对于批量更新操作的一种优化方式

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 作者:景云丽.卢浩.宋源栋 GreatSQL社区原创内容未经授权不得随意使用,转 ...

随机推荐

  1. 455. Assign Cookies - LeetCode

    Question 455. Assign Cookies Solution 题目大意:数组g的大小表示有几个小孩,每个元素表示小孩的食量,数组s的大小表示有多少个饼干,每个元素的大小表示每个饼干的大小 ...

  2. 好客租房46-react组件进阶目标

    1能够使用props接收数据 2能够使用父子组件之间的通讯 3能够实现兄弟组件之间的通讯 4能够给组件添加props校验 5能够说出生命周期常用的钩子函数 6能够知道高阶组件的作用 组件通讯介绍 组件 ...

  3. 104_Power Query 数据库条件查询

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载 1.应用场景 底层数据在数据库(sql server数据库,其他数据库同理,下文不再说明.)中,Excel中有查询的字段,需要 ...

  4. 内网穿透frp教程 windows远程桌面连接

    鉴于ngrok不是特别好用 昨天又发现frp这个神器 在管理端还有图形界面十分友好 话不多说开始 准备工作 1.一个域名 2.一台服务器 一.域名与服务器 域名和服务器直接买就好咯 价格不高 一定要在 ...

  5. SpringBoot官方支持任务调度框架,轻量级用起来也挺香!

    大家好,我是二哥呀.定时任务的应用场景其实蛮常见的,比如说: 数据备份 订单未支付则自动取消 定时爬取数据 定时推送信息 定时发布文章 等等(想不出来了,只能等等来凑,,反正只要等的都需要定时,怎么样 ...

  6. torch.nn.MSELoss()函数解读

    转载自:https://www.cnblogs.com/tingtin/p/13902325.html

  7. 4. Docker自定义镜像

    下面制作镜像: 此时,验证一下: 以上验证都是成功的,到此就可以把刚才建立并经过刚才运行并验证的镜像包通过各种方式传递给其他人来部署使用了,并且环境肯定是可你统一的.

  8. rpc的正确打开方式|读懂Go原生net/rpc包

    前言 最近在阅读字节跳动开源RPC框架Kitex的源码,分析了如何借助命令行,由一个IDL文件,生成client和server的脚手架代码,也分析了Kitex的日志组件klog.当然Kitex还有许多 ...

  9. 接口开发-restful

    数据库表设计 1 --员工表 2 create table Employee 3 ( 4 id NUMBER primary key, 5 employeeID NUMBER not null, 6 ...

  10. 慢到不能忍?别忍了,Ubuntu 21.10 APT 源修改为华为云镜像源

    更新记录 2022年4月15日:本文迁移自Panda666原博客,原发布时间:2021年3月29日. 2022年4月15日:将源改为华为云,华为云更方便.Ubuntu从20.04更新到21.10. 切 ...