MySQL 多实例的安装


本文摘自PHP中文网,作者藏色散人,侵删。

Step 1 . 准备工作

关闭防火墙; 安装 MySQL依赖于libaio 库;下载,解压,重命名 MySQL的执行文件;新建用户组和用户 等准备工作在此不再赘述。

可执行文件目录为 /data/mysql57

添加用户和组的指令

1

2

groupadd mysql

useradd mysql -g mysql

Step 2 . 添加环境变量

在/etc/profile文件中,追加 PATH=${PATH}:/data/mysql57/bin/

保存后,如需要立即生效,可执行 source /etc/profile 。

step 3 . 创建目录并授权

在data根目录下执行

1

mkdir -p mysql3306/data mysql3306/mysql_log mysql3306/tmp mysql3307/data  mysql3307/mysql_log  mysql3307/tmp mysqld_multi/log

创建记录log的文件,此步骤不可少。

1

touch /data/mysql3306/mysql_log/mysql3306.errtouch /data/mysql3307/mysql_log/mysql3307.err

赋予目录和文件权限

1

chown -R mysql.mysql mysql3* mysqld_multi

在本测试案例中,mysql57是从其它服务上copy来的,不是直接下载解压的,所以多了下面的两步授权操作。

1

chmod -R 755 /data/mysql57/bin

1

chmod -R 755 /data/mysql57/support-files

step 4 . 编辑my.cnf

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

[client]

host=localhost

socket = /tmp/mysql.sock

default-character-set=utf8mb4

#loose-local-infile=0

 

[mysqld]

user=mysql

log_bin_trust_function_creators=1

secure_file_priv='/tmp'

 

########server setting#######

sql_mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

character-set-server=utf8mb4

collation_server=utf8mb4_unicode_ci

lower_case_table_names = 0

skip_name_resolve = 1

#max_connect_errors = 1000

max_connections = 2000

thread_cache_size=256

#thread_stack= 262144

#back_log=80

max_allowed_packet = 134217728

event_scheduler = 1

local-infile=0

#lower_case_table_names = 1

explicit_defaults_for_timestamp = 1

expire_logs_days = 7

log_bin_trust_function_creators =1

 

####.frm/.ibd files qty related

open_files_limit=65535

innodb_open_files=65535

table_open_cache=65535

table_definition_cache=65535

 

#### seesion buffer related

read_buffer_size = 262144

read_rnd_buffer_size = 524288

sort_buffer_size = 8388608

join_buffer_size = 8388608

 

####memory table size

tmp_table_size =67108864

max_heap_table_size=67108864

 

####timeout

interactive_timeout = 1800

wait_timeout = 1800

# connect_timeout=10

 

########slow query ########

slow_query_log = 1

log_slow_slave_statements = 1

#log_queries_not_using_indexes = 1

log_throttle_queries_not_using_indexes = 10

long_query_time = 1

#min_examined_row_limit = 10000

 

########innodb settings########

innodb_buffer_pool_size = 10737418240

innodb_buffer_pool_instances = 16

innodb_buffer_pool_dump_pct = 40

innodb_lru_scan_depth = 2048

innodb_page_cleaners = 16

#innodb_purge_threads = 4

innodb_sort_buffer_size = 67108864

#innodb_file_per_table = 1

#innodb_flush_log_at_trx_commit = 1

 

innodb_undo_log_truncate = 1

innodb_undo_tablespaces = 3

innodb_max_undo_log_size = 2147483648

innodb_purge_rseg_truncate_frequency = 128

 

innodb_log_file_size = 1073741824

innodb_log_files_in_group = 3

innodb_log_buffer_size = 16777216

innodb_flush_method = O_DIRECT

innodb_flush_neighbors = 0

innodb_print_all_deadlocks = 1

 

innodb_strict_mode = 1

#innodb_lock_wait_timeout = 50

 

innodb_io_capacity = 32768

innodb_io_capacity_max = 65536

innodb_thread_concurrency = 32

innodb_write_io_threads = 8

innodb_read_io_threads = 8

 

########replication settings########

master_info_repository = TABLE

relay_log_info_repository = TABLE

 

gtid_mode = on

enforce_gtid_consistency = 1

binlog_gtid_simple_recovery=1

relay_log_recovery = 1

 

slave-parallel-type = LOGICAL_CLOCK

slave-parallel-workers = 16

slave_transaction_retries=128

slave_preserve_commit_order=1

 

log_slave_updates=1

binlog_format = ROW

log_timestamps=system

 

binlog_rows_query_log_events = 1

binlog_row_image='full'

slave_skip_errors = ddl_exist_errors

 

########semi sync replication settings########

##plugin_dir=/data/mysql/plugin/

#plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"

#rpl_semi_sync_master_enabled = 1

#rpl_semi_sync_master_timeout = 5000

#rpl_semi_sync_slave_enabled = 1

 

[mysqld_multi]

mysqld = /data/mysql57/bin/mysqld_safe

mysqladmin = /data/mysql57/bin/mysqladmin

log = /data/mysqld_multi/log/mysqld_multi.log

 

[mysqld3306] 

basedir = /data/mysql57

mysqladmin=mysqladmin

datadir=/data/mysql3306/data

port=3306 

server_id=102473306

socket= /tmp/mysql_3306.sock

tmpdir = /data/mysql3306/tmp

pid-file = /data/mysql3306/mysql_log/mysql3306.pid

slow_query_log_file = /data/mysql3306/mysql_log/mysql3306_slow_new.log 

log-error = /data/mysql3306/mysql_log/mysql3306.err

general_log_file= /data/mysql3306/mysql_log/mysql3306.genlog

log-bin = /data/mysql3306/mysql_log/mysql3306_bin

relay_log = /data/mysql3306/mysql_log/relay3306.log

 

innodb_buffer_pool_size = 90G

innodb_buffer_pool_instances = 8

 

[mysqld3307]

basedir = /data/mysql57

mysqladmin=mysqladmin

datadir=/data/mysql3307/data

port=3307

server_id=102473307

socket= /tmp/mysql_3307.sock

tmpdir = /data/mysql3307/tmp

pid-file = /data/mysql3307/mysql_log/mysql3307.pid

slow_query_log_file = /data/mysql3307/mysql_log/mysql3307_slow_new.log

log-error = /data/mysql3307/mysql_log/mysql3307.err

general_log_file= /data/mysql3307/mysql_log/mysql3307.genlog

log-bin = /data/mysql3307/mysql_log/mysql3307_bin

relay_log = /data/mysql3307/mysql_log/relay3307.log

 

innodb_buffer_pool_size = 90G

innodb_buffer_pool_instances = 8

 

[mysqldump]

quick

step 5 . 初始化实例

初始化3306端口的实例,注意产生的临时密码。

1

/data/mysql57/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/data/mysql57  --datadir=/data/mysql3306/data

初始化3307端口的实例,注意产生的临时密码。

1

/data/mysql57/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/data/mysql57  --datadir=/data/mysql3307/data

step 6 . 复制生成mysqld_multi并添加到开机启动

1

cp /data/mysql57/support-files/mysqld_multi.server /etc/init.d/mysqld_multi

1

chkconfig  --add mysqld_multi

step 7 . 多实例Mysqld的开启

开启全部实例

1

mysqld_multi start

查看开启情况(查看全部实例状态)

1

mysqld_multi report

开启指定实例

开启/etc/my.cnf中[mysqld3306]其中mysqld后面的数字为标签,例如3306标签

1

mysqld_multi start 3306

同样开启3307标签实例

1

mysqld_multi start 3307

(注意:此处没有说通过 mysqld_multi stop 命令进行关闭实例,为什么不说,因为命令无效。Step 9 的操作会让它变成有效)

step 8 . 第一次登入实例,修改root账号密码

多实例登入需指定 socket 参数

本测试3306实例登入的方式为:

1

mysql  -S /tmp/mysql_3306.sock -uroot --port 3306 -p

step 9 . 赋予通过mysqld_multi stop关闭实例的权限。

关闭实例需要配置root用户及密码, 修改 /etc/my.cnf文件。

在 [client] 位置添加

1

2

user=root

password=密码

因为文件中需要保留账号密码,有安全风险。实际环境中要不要如此设置,还需根据具体情况和安全要求而定。

经过以上步骤的操作,此服务器成功安装了2个MySQL实例,一个Port为3306,另一个Port为3307

以上就是MySQL 多实例的安装的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

mysql数据库8——数据库中函数的应用详解

mysql如何设置默认编码为utf-8

mysql数据库单表查询

分析mysql表读写、索引等操作的sql语句效率优化问题

如何查看mysql语句的运行时间

mysql如何添加索引

mysql索引介绍

navicat for mysql怎么建立多表链接

mysql精讲之二:dml数据操作语句

如何解决mysql更新失败的问题

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...