一:安装
下载地址:https://dev.mysql.com/downloads/mysql/
1)上传压缩包至/usr/local
2)解压: tar -Jxvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
3)重命名:mv mysql-8.0.27-linux-glibc2.12-x86_64 mysql
4)进入目录:cd mysql 创建目录:mkdir tmp mkdir conf mkdir logs mkdir logs/error_log mkdir socket mkdir etc(因为my.cnf配置了很多路径,所以要创建)
5)创建my.conf文件:cd etc vim my.cnf
1 [client] 2 port = 3306 3 # MySQL客户端默认端口号 4 5 socket = /usr/local/mysql/socket/mysql.sock 6 # 用于本地连接的Unix套接字文件存放路径 7 8 default-character-set = utf8mb4 9 # MySQL客户端默认字符集 10 11 [mysql] 12 auto-rehash 13 # 开启tab补齐功能 14 socket = /usr/local/mysql/socket/mysql.sock 15 # 用于本地连接的Unix套接字文件存放路径 16 17 default-character-set = utf8mb4 18 # MySQL客户端默认字符集 19 20 max_allowed_packet = 256M 21 # 指定在网络传输中一次消息传输量的最大值。系统默认值 为1MB,最大值是1GB,必须设置1024的倍数。 22 23 #log_error = /usr/local/mysql/logs/error_log/error.log 24 [mysqld] 25 port = 3306 26 # MySQL服务端默认监听的TCP/IP端口 27 28 socket = /usr/local/mysql/socket/mysql.sock 29 # 用于本地连接的Unix套接字文件存放路径 30 31 pid_file = /usr/local/mysql/tmp/mysql.pid 32 # 进程ID文件存放路径 33 34 basedir = /usr/local/mysql 35 # MySQL软件安装路径 36 37 datadir = /usr/local/mysql/data 38 # MySQL数据文件存放路径 39 40 tmpdir = /usr/local/mysql/tmp 41 # MySQL临时文件存放路径 42 43 character_set_server = utf8mb4 44 # MySQL服务端字符集 45 46 collation_server = utf8mb4_general_ci 47 # MySQL服务端校对规则 48 49 default-storage-engine = InnoDB 50 # 设置默认存储引擎为InnoDB 51 52 autocommit = OFF 53 # 默认为ON,设置为OFF,关闭事务自动提交 54 55 transaction_isolation = READ-COMMITTED 56 57 event_scheduler = ON 58 # 开启事件调度器event_scheduler 59 60 lower_case_table_names = 0 61 # 库名、表名是否区分大小写。默认为0,设置1,不区分大小写,创建的表、数据库都以小写形式存放磁盘。 62 ################ Network & Connection ################### 63 max_connections = 1000 64 # MySQL允许的最大并发连接数,默认值151,如果经常出现Too Many Connections的错误提示,则需要增大此值。 65 66 max_user_connections = 1000 67 # 每个数据库用户的最大连接,(同一个账号能够同时连接到mysql服务的最大连接数),默认为0,表示不限制。 68 69 back_log = 500 70 # MySQL监听TCP端口时设置的积压请求栈大小,默认50+(max_connections/5),最大不超过900 71 72 max_connect_errors = 10000 73 # 每个主机的连接请求异常中断的最大次数。对于同一主机,如果有超出该参数值个数的中断错误连接,则该主机将被禁止连接。如需对该主机进行解禁,执行:FLUSH HOST。 74 75 interactive_timeout = 28800 76 # 服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。默认值:28800秒(8小时) 77 78 wait_timeout = 28800 79 # 服务器关闭非交互连接之前等待活动的秒数。默认值:28800秒(8小时) 80 # 指定一个请求的最大连接时间,当MySQL连接闲置超过一定时间后将会被强行关闭。对于4GB左右内存的服务器来说,可以将其设置为5~10。 81 # 如果经常出现Too Many Connections的错误提示,或者show processlist命令发现有大量sleep进程,则需要同时减小interactive_timeout和wait_timeout值。 82 83 connect_timeout = 28800 84 # 在获取连接时,等待握手的超时秒数,只在登录时生效。主要是为了防止网络不佳时应用重连导致连接数涨太快,一般默认即可。 85 86 open_files_limit = 5000 87 # mysqld能打开文件的最大个数,默认最小1024,如果出现too mant open files之类的就需要增大该值。 88 89 max_allowed_packet = 256M 90 # 指定在网络传输中一次消息传输量的最大值。系统默认值 为1MB,最大值是1GB,必须设置1024的倍数。 91 92 ################# Thread & Buffer ####################### 93 sort_buffer_size = 2M 94 # 排序缓冲区大小,connection级参数,默认大小为2MB。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引,其次可以尝试增大该值。 95 96 read_buffer_size = 160M 97 # 顺序读缓冲区大小,connection级参数,该参数对应的分配内存是每连接独享。对表进行顺序扫描的请求将分配一个读入缓冲区。 98 99 read_rnd_buffer_size = 160M 100 # 随机读缓冲区大小,connection级参数,该参数对应的分配内存是每连接独享。默认值256KB,最大值4GB。当按任意顺序读取行时,将分配一个随机读缓存区。 101 102 join_buffer_size = 320M 103 # 联合查询缓冲区大小,connection级参数,该参数对应的分配内存是每连接独享。 104 105 bulk_insert_buffer_size = 64M 106 # 批量插入数据缓存大小,可以有效提高插入效率,默认为8M 107 108 thread_cache_size = 8 109 # 服务器线程缓冲池中存放的最大连接线程数。默认值是8,断开连接时如果缓存中还有空间,客户端的线程将被放到缓存中,当线程重新被请求,将先从缓存中读取。 110 # 根据物理内存设置规则如下:1G —> 8,2G —> 16,3G —> 32,大于3G —> 64 111 112 thread_stack = 256K 113 # 每个连接被创建时,mysql分配给它的内存。默认192KB,已满足大部分场景,除非必要否则不要动它,可设置范围128KB~4GB。 114 115 # query_cache_type = 0 116 # 关闭查询缓存 117 118 # query_cache_size = 0 119 # 查询缓存大小,在高并发,写入量大的系统,建议把该功能禁掉。 120 121 # query_cache_limit = 4M 122 # 指定单个查询能够使用的缓冲区大小,缺省为1M 123 124 tmp_table_size = 1024M 125 # MySQL的heap(堆积)表缓冲大小,也即内存临时表,默认大小是 32M。如果超过该值,则会将临时表写入磁盘。在频繁做很多高级 GROUP BY 查询的DW环境,增大该值。 126 # 实际起限制作用的是tmp_table_size和max_heap_table_size的最小值。 127 128 max_heap_table_size = 1024M 129 # 用户可以创建的内存表(memory table)的大小,这个值用来计算内存表的最大行数值。 130 131 table_definition_cache = 400 132 # 表定义缓存区,缓存frm文件。表定义(global)是全局的,可以被所有连接有效的共享。 133 134 table_open_cache = 1000 135 # 所有SQL线程可以打开表缓存的数量,缓存ibd/MYI/MYD文件。 打开的表(session级别)是每个线程,每个表使用。 136 137 table_open_cache_instances = 4 138 # 对table cache 能拆成的分区数,用于减少锁竞争,最大值64. 139 140 141 #skip-external-locking 142 #skip-locking 143 # 避免MySQL的外部锁定,减少出错几率,增强稳定性。 144 145 #skip-name-resolve 146 # 禁止MySQL对外部连接进行DNS解析,消除MySQL进行DNS解析。如果开启该选项,所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求! 147 148 #skip-networking 149 # 不允许CP/IP连接,只能通过命名管道(Named Pipes)、共享内存(Shared Memory)或Unix套接字(Socket)文件连接。 150 # 如果Web服务器以远程连接方式访问MySQL数据库服务器,则不要开启该选项,否则无法正常连接! 151 # 适合应用和数据库共用一台服务器的情况,其他客户端无法通过网络远程访问数据库 152 153 ################### Slow Log ###################### 154 #slow_query_log = ON 155 # 开启慢查询日志 156 157 #slow_query_log_file = /usr/local/mysql/logs/slow_log/slow.log 158 # 慢查询日志存放路径 159 160 #long_query_time = 10 161 # 超过10秒的查询,记录到慢查询日志,默认值10 162 163 #log_queries_not_using_indexes = ON 164 # 没有使用索引的查询,记录到慢查询日志,可能引起慢查询日志快速增长 165 166 #log_slow_admin_statements = ON 167 # 执行缓慢的管理语句,记录到慢查询日志 168 # 例如 ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE, and REPAIR TABLE. 169 170 ################### Error Log #################### 171 #log_error = /usr/local/mysql/logs/error_log/error.log 172 # 错误日志存放路径 173 174 #log_error_verbosity = 2 175 # 全局动态变量,默认3,范围:1~3 176 # 表示错误日志记录的信息,1:只记录error信息;2:记录error和warnings信息;3:记录error、warnings和普通的notes信息 177 178 ################### Bin Log ###################### 179 server_id = 6 180 # 数据库服务器ID 181 182 log_bin = /usr/local/mysql/logs/bin_log/binlog 183 # 二进制日志存放路径 184 185 log_bin_index = /usr/local/mysql/logs/bin_log/binlog.index 186 # 同binlog,定义binlog的位置和名称 187 188 binlog_format = row 189 # binlog格式,复制有3种模式STATEMENT,ROW,MIXED 190 191 # expire_logs_days = 10 192 # 只保留最近10天的binlog日志 193 194 max_binlog_size = 50M 195 # 每个binlog日志文件的最大容量 196 197 binlog_cache_size = 2M 198 # 每个session分配的binlog缓存大小 199 # 事务提交前产生的日志,记录到Cache中;事务提交后,则把日志持久化到磁盘 200 201 #log_slave_updates = ON 202 # 开启log_slave_updates,从库的更新操作记录进binlog日志 203 204 sync_binlog = 1 205 # sync_binlog=0(默认),事务提交后MySQL不刷新binlog_cache到磁盘,而让Filesystem自行决定,或者cache满了才同步。 206 # sync_binlog=n,每进行n次事务提交之后,MySQL将binlog_cache中的数据强制写入磁盘。 207 208 binlog_rows_query_log_events = ON 209 # 将row模式下的sql语句,记录到binlog日志,默认是0(off) 210 211 [mysqldump] 212 max_allowed_packet = 256M 213 #quick 214 # mysqldump导出大表时很有用,强制从服务器查询取得记录直接输出,而不是取得所有记录后将它们缓存到内存中。 215 216 [mysqlhotcopy] 217 #interactive-timeout 218 219 [mysqld_safe] 220 #ledir = /app/mysql/bin 221 # 包含mysqld程序的软件安装路径,用该选项来显式表示服务器位置。 222 #log_error = /usr/local/mysql/logs/error_log/error.log
6)创建mysql用户组和mysql用户:groupadd mysql useradd -g mysql mysql
7)修改目录权限:chown -R mysql.mysql /usr/local/mysql/
8)初始化mysql: ./bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize
9)修改 support-files/mysql.server 下 datadir和basedir
10)启动mysql:sudo ./mysql.server start
11)修改环境变量:vim /etc/profile source /etc/profile
出现错误:Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).
可能的错误:创建data目录错误,删除
出现错误:mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
执行:sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
12)登录:mysql -u root -p
13)修改密码:mysql> alter user 'root'@'localhost' identified by 'hyf123';
14)设置开机自启:
# 将mysql加入到服务 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql # 开机启动 chkconfig mysql on # 启动mysql service mysql start
15)对外访问权限:
mysql> use mysql; mysql> update user set host='%' where user ='root'; mysql> FLUSH PRIVILEGES; #刷新权限 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; 再执行授权语句:
16)创建主从复制,修改my.cnf文件
#在主操作: create user 'hyf'@'192.168.121.133' IDENTIFIED WITH mysql_native_password BY 'hyf123'; GRANT REPLICATION SLAVE ON *.* TO 'hyf'@'192.168.121.133'; flush privileges; #查询主状态 show master status; #以下在从操作: change master to master_host='192.168.121.132',master_user='hyf',master_password='hyf123',master_port=3306,master_log_file='binlog.000009',master_log_pos=4364; #启动从 start slave; #查询从状态 show slave status\G #停止从 stop slave; 注意:在此处从不copy主之前的数据,如果执行主之前的数据库会报错,从不在工作