10. ReadWriteLock 读写锁

墨蓝 2022-08-07 04:44 318阅读 0赞

mysqld mysqld_safe mysql.server mysqld_multi 四种启动方式区别

  • 1-mysqld
    • 1.1-初始化 MySQL
    • 1.2-启动 MySQL
    • 1.3-连接 MySQL
  • 2-mysqld_safe
    • 2.1-初始化 MySQL
    • 2.2-启动 MySQL
    • 2.3-连接 MySQL
  • 3-mysql.server
    • 3.1-初始化 MySQL
    • 3.2-启动 MySQL
    • 3.3-连接 MySQL
  • 4-mysqld_multi

1-mysqld

  • mysqld:是MySQL的核心程序,用于管理MySQL数据库文件以及用户的请求操作。
  • mysqld可以读取配置文件(my.cnf)中的[mysqld]的部分

    服务端设置

    [mysqld]

    服务id:可高可用时区分

    server_id = 001

    监听端口

    port = 3306

    启动用户

    user = mysql

    数据库默认编码(5.1以下 default-character-set)

    character_set_server = utf8mb4

    数据库默认比对规则、排序规则

    collation_server = utf8mb4_bin

    该目录为根目录(安装目录)

    basedir = /data/opt/mysql-8.0.19_3306

    数据库初始化数据存放目录(创建文件夹且文件夹中无文件)

    datadir = /data/data/mysql/8.0.19_3306/data

    数据库存放临时文件的目录(创建文件夹)

    tmpdir = /data/data/mysql/8.0.19_3306/tmp

    指定客户端程序与数据库间通讯的套接字文件

    socket = /data/data/mysql/8.0.19_3306/mysql.sock
    explicit_defaults_for_timestamp = true

1.1-初始化 MySQL

  1. /data/opt/mysql-8.0.19_3306/bin/mysqld --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf --initialize

1.2-启动 MySQL

  1. /data/opt/mysql-8.0.19_3306/bin/mysqld --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf

1.3-连接 MySQL

  1. /data/opt/mysql-8.0.19_3306/bin/mysql --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf -u root -p

2-mysqld_safe

mysqld_safe:相当于多了一个守护进程,mysqld挂了会自动把mysqld进程拉起来。

  • mysqld_safe读取的配置部分[mysqld][server][myslqd_safe],为了兼容mysql_safe也会读取[safe_mysqld]中的配置。
  • 调用的mysqld是可以在[mysqld_safe]中用-mysqld--mysqld-version指定。

    [mysqld_safe]

    数据库错误日志(创建文件夹)

    log-error = /data/data/mysql/8.0.19_3306/log/mysqld.log

    数据库启动后进程文件位置

    pid-file = /data/data/mysql/8.0.19_3306/3306.pid

2.1-初始化 MySQL

  1. /data/opt/mysql-8.0.19_3306/bin/mysqld --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf --initialize

2.2-启动 MySQL

  1. /data/opt/mysql-8.0.19_3306/bin/mysqld_safe --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf

2.3-连接 MySQL

  1. /data/opt/mysql-8.0.19_3306/bin/mysql --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf -u root -p

3-mysql.server

mysql.server:启动之前需要mysql.server文件复制到/etc/init.d目录下才可以使用。

3.1-初始化 MySQL

  1. /data/opt/mysql-8.0.19_3306/bin/mysqld --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf --initialize

3.2-启动 MySQL

  1. cp /data/opt/mysql-8.0.19_3306/bin/support-files/mysql.server /etc/init.d/mysql
  2. # 开机自启
  3. chkconfig --add mysql
  4. # 启动 MySQL等命令
  5. service mysql {start|stop|restart|reload|force-reload|status}

3.3-连接 MySQL

  1. /data/opt/mysql-8.0.19_3306/bin/mysql --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf -u root -p

4-mysqld_multi

mysqld_multi:是用于管理多实例启动的一个脚本。

  • mysqld_multi读取配置文件中的[mysqld_multi][mysqldN]N是一个整数,建议用端口号表示。该部分配置会覆盖[mysqld]部分中的配置。

MySQL 单机多实例部署 多配置文件 mysqld_multi 两种方案

multi.cnf

  1. # 客户端设置:客户端的连接参数
  2. [client]
  3. # 连接 MySQL 使用的端口
  4. port = 3308
  5. # 连接 MySQL 使用的套接字文件
  6. socket = /data/data/mysql/multi/mysql.sock
  7. # 设置字符集
  8. default-character-set = utf8mb4
  9. # 服务端设置
  10. [mysqld]
  11. # 数据库默认编码(5.1以下 default-character-set)
  12. character_set_server = utf8mb4
  13. # 数据库默认比对规则、排序规则
  14. collation_server = utf8mb4_bin
  15. # 该目录为根目录(安装目录)
  16. basedir = /data/opt/mysql-8.0.19
  17. [mysqld_multi]
  18. # mysqld命令位置,用于启动MySQL实例,也可以为mysqld_safe命令位置
  19. mysqld = /data/opt/mysql-8.0.19/bin/mysqld_safe
  20. # 用于停止MySQL实例
  21. mysqladmin = /data/opt/mysql-8.0.19/bin/mysqladmin
  22. # 调用mysqladmin时的账号
  23. user = mysql
  24. # 调用mysqladmin时的密码
  25. password = password
  26. # 日志
  27. log = /data/data/mysql/multi/log/mysql_multi.log
  28. # 3308数据库
  29. [mysqld3308]
  30. # 监听端口
  31. port = 3308
  32. # 服务id:可高可用时区分
  33. server_id = 3308
  34. # 数据库默认编码(5.1以下 default-character-set)
  35. character_set_server = utf8mb4
  36. # 数据库默认比对规则、排序规则
  37. collation_server = utf8mb4_bin
  38. # 该目录为根目录(安装目录)
  39. basedir = /data/opt/mysql-8.0.19
  40. # 数据库初始化数据存放目录(创建文件夹且文件夹中无文件)
  41. datadir = /data/data/mysql/multi/8.0.19_3308/data
  42. # 指定客户端程序与数据库间通讯的套接字文件
  43. socket = /data/data/mysql/multi/8.0.19_3308/mysql3308.sock
  44. # 数据库存放临时文件的目录(创建文件夹且文件夹中无文件)
  45. tmpdir = /data/data/mysql/multi/8.0.19_3308/tmp
  46. pid-file = /data/data/mysql/multi/8.0.19_3308/mysql3308.pid
  47. explicit_defaults_for_timestamp = true
  48. log-output = file
  49. slow_query_log = 1
  50. long_query_time = 1
  51. slow_query_log_file = /data/data/mysql/multi/8.0.19_3308/log/slow.log
  52. log-error = /data/data/mysql/multi/8.0.19_3308/log/error.log
  53. binlog_format = mixed
  54. log-bin = /data/data/mysql/multi/8.0.19_3308/log/mysql3308_bin
  55. # 3309数据库
  56. [mysqld3309]
  57. # 监听端口
  58. port = 3309
  59. # 服务id:可高可用时区分
  60. server_id = 3309
  61. # 数据库默认编码(5.1以下 default-character-set)
  62. character_set_server = utf8mb4
  63. # 数据库默认比对规则、排序规则
  64. collation_server = utf8mb4_bin
  65. # 该目录为根目录(安装目录)
  66. basedir = /data/opt/mysql-8.0.19
  67. # 数据库初始化数据存放目录(创建文件夹且文件夹中无文件)
  68. datadir = /data/data/mysql/multi/8.0.19_3309/data
  69. # 指定客户端程序与数据库间通讯的套接字文件
  70. socket = /data/data/mysql/multi/8.0.19_3309/mysql3309.sock
  71. # 数据库存放临时文件的目录(创建文件夹且文件夹中无文件)
  72. tmpdir = /data/data/mysql/multi/8.0.19_3309/tmp
  73. pid-file = /data/data/mysql/multi/8.0.19_3309/mysql3309.pid
  74. explicit_defaults_for_timestamp = true
  75. log-output = file
  76. slow_query_log = 1
  77. long_query_time = 1
  78. slow_query_log_file = /data/data/mysql/multi/8.0.19_3309/log/slow.log
  79. log-error = /data/data/mysql/multi/8.0.19_3309/log/error.log
  80. binlog_format = mixed
  81. log-bin = /data/data/mysql/multi/8.0.19_3309/log/mysql3309_bin
  82. # 3310数据库
  83. [mysqld3310]
  84. # 监听端口
  85. port = 3310
  86. # 服务id:可高可用时区分
  87. server_id = 3310
  88. # 数据库默认编码(5.1以下 default-character-set)
  89. character_set_server = utf8mb4
  90. # 数据库默认比对规则、排序规则
  91. collation_server = utf8mb4_bin
  92. # 该目录为根目录(安装目录)
  93. basedir = /data/opt/mysql-8.0.19
  94. # 数据库初始化数据存放目录(创建文件夹且文件夹中无文件)
  95. datadir = /data/data/mysql/multi/8.0.19_3310/data
  96. # 指定客户端程序与数据库间通讯的套接字文件
  97. socket = /data/data/mysql/multi/8.0.19_3310/mysql3310.sock
  98. # 数据库存放临时文件的目录(创建文件夹且文件夹中无文件)
  99. tmpdir = /data/data/mysql/multi/8.0.19_3310/tmp
  100. pid-file = /data/data/mysql/multi/8.0.19_3310/mysql3310.pid
  101. explicit_defaults_for_timestamp = true
  102. log-output = file
  103. slow_query_log = 1
  104. long_query_time = 1
  105. slow_query_log_file = /data/data/mysql/multi/8.0.19_3310/log/slow.log
  106. log-error = /data/data/mysql/multi/8.0.19_3310/log/error.log
  107. binlog_format = mixed
  108. log-bin = /data/data/mysql/multi/8.0.19_3310/log/mysql3310_bin

发表评论

表情:
评论列表 (有 0 条评论,318人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ReadWriteLock

    现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如

    相关 ReadWriteLock

           隐式锁Synchronized、重入锁ReetrantLock都是互斥锁、独占锁,即同一个锁只能每时每刻至多由一个线程来获持有。互斥,是一种保守策略,虽然避免了“

    相关 ReadWriteLock

    首先对于一个技术,存在就是为了解决某些技术难点。 为什么已经有ReentLock锁,却还要引入读写锁呢? 答案就是为了解决在 读多写少的场景下的性能问题,运用读写锁,能提高