一,MySql简介

1,概述

image.png

2,高级MySql

  • MySql内核
  • Sql优化工程师
  • MySql服务器的优化
  • 查询语句优化
  • 主重复制
  • 软硬件升级
  • 容灾备份
  • Sql编程

    二,MySqlLinux版本安装—MySql5.5

    一,MySql5.5

    1,下载地址:
    2,检查当前系统是否安装过
    3,安装MySql服务(注意提示)
    4,安装MySql客户端
    5,查看MySql安装时创建的MySql用户和MySql组
    6,MySql服务的启+停
    7,MySql服务启动后开始连接
    8,自启动MySql启动
    9,修改配置文件
    10,修改字符集和数据存储路径
    11,MySql的安装位置

1、下载
下载版本:我这里选择的5.6.33,通用版,linux下64位
也可以直接复制64位的下载地址,通过命令下载:
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
2、解压
tar -zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz
#复制解压后的mysql目录
mkdir -p /opt/mysql
cp -r mysql-5.6.33-linux-glibc2.5-x86_64 /opt/mysql
3、添加用户组和用户
groupadd mysql
#添加用户mysql 到用户组mysql
useradd -g mysql mysql
给mysql5.6.33用户组和权限
chown -R mysql:mysql /opt/mysql
4、安装
初始化
cd /opt/mysql/bin
./scripts/mysql_install_db --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data

/opt/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data

cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
cp /opt/mysql/support-files/my-default.cnf /etc/my.cnf
#修改启动脚本
vim /etc/init.d/mysqld
#修改项:
basedir=/opt/mysql
datadir=/opt/mysql/data
修改配置文件 vim /etc/my.cnf

  1. [client]
  2. default-character-set = utf8
  3. [mysql]
  4. default-character-set = utf8
  5. [mysqld]
  6. #sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  7. #设置utf8字符集###
  8. character-set-client-handshake = FALSE
  9. character-set-server = utf8
  10. collation-server = utf8_unicode_ci
  11. init_connect=‘SET NAMES utf8
  12. port=3306
  13. bind-address = 0.0.0.0 # 表示允许任何主机登陆MySQL
  14. #路径设置-开始-baseDir###
  15. basedir = /opt/mysql
  16. datadir = /opt/mysql/data
  17. socket = /opt/mysql/mysql.sock
  18. pid-file = /opt/mysql/mysqld.pid
  19. #创建新表时将使用的默认存储引擿
  20. default-storage-engine=INNODB
  21. #数据库服务器ID
  22. server-id = 1
  23. #log_bin_basename
  24. #log_bin_index
  25. #mysql错误日志
  26. log_error = /opt/mysql/log/error.log
  27. #mysql所有操作日志
  28. #general_log_file = /opt/mysql/log/general.log
  29. #开启binlog日志
  30. #log-bin = /opt/mysql/log/mysql-bin
  31. #慢查询日志
  32. slow_query_log_file =/opt/mysql/log/slowquery.log
  33. #慢查询日志
  34. slow_query_log = ON
  35. #slow_query_log_file
  36. #超过0.5秒记录
  37. long_query_time = 10
  38. #sql语句执行时间大于long_query_time至少被检查到的次数。
  39. min_examined_row_limit = 100
  40. #mysql未使用索引或索引扫描是否被记录到慢查询日志中
  41. log_queries_not_using_indexes = 1
  42. #用来表示每分钟允许记录到slow log的且未使用索引的SQL语句次数
  43. log_throttle_queries_not_using_indexes = 10
  44. #innodb日志文件存放位置
  45. #innodb_log_group_home_dir = /opt/mysql/innodb
  46. #innodb共享表空间文件
  47. #innodb_data_home_dir = /opt/mysql/innodb
  48. #mysql所有操作日志 生产服务器不开启
  49. #general_log = OFF
  50. #general_log_file
  51. #需要同步的数据库
  52. #binlog-do-db=crm
  53. #不需要同步的数据库
  54. binlog-ignore-db=mysql
  55. #同binlog,定义binlog的位置和名称
  56. log_bin_index = /opt/mysql/log/binlog.index
  57. #binlog格式,复制有3种模式STATEMENT,ROW,MIXED
  58. binlog_format = row
  59. #只保留最近10天的binlog日志
  60. expire_logs_days = 10
  61. #每个binlog日志文件的最大容量
  62. max_binlog_size = 50M
  63. #每个session分配的binlog缓存大小
  64. ##事务提交前产生的日志,记录到Cache中;事务提交后,则把日志持久化到磁盘
  65. binlog_cache_size = 2M
  66. #开启log_slave_updates,从库的更新操作记录进binlog日志
  67. log_slave_updates = ON
  68. # sync_binlog=0(默认),事务提交后MySQL不刷新binlog_cache到磁盘,而让Filesystem自行决定
  69. #或者cache满了才同步。
  70. #sync_binlog=n,每进行n次事务提交之后,MySQL将binlog_cache中的数据强制写入磁盘。
  71. sync_binlog = 0
  72. #将row模式下的sql语句,记录到binlog日志,默认是0(off)#
  73. binlog_rows_query_log_events = ON
  74. symbolic-links=0
  75. #InnoDB打开idb文件数量
  76. #innodb_open_files = 512
  77. #innodb_buffer_pool_size = 4G
  78. #innodb_buffer_pool_instances = 1
  79. #mysql允许的并发操作数量
  80. max_connections = 512
  81. #mysql连接池线程数量
  82. thread_cache_size = 256
  83. #在缓冲区中表的数量 一般4g内存2048
  84. table_open_cache = 512
  85. key_buffer_size = 1G
  86. #关闭一个交互的连接之前所要等待的秒数
  87. interactive_timeout = 200
  88. #关闭一个非交互的连接之前所要等待的秒数
  89. wait_timeout = 200
  90. #0不自动提交 1自动提交事务
  91. autocommit = 1
  92. #mysql可以timestamp字段可以使用null
  93. explicit_defaults_for_timestamp = ON
  94. #跳过反向域名解析(mysql不可使用域名登录)
  95. skip_name_resolve = ON
  96. #MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中
  97. back_log = 256
  98. #错误连接次数
  99. max_connect_errors = 30
  100. #每次最大提交数据包大小
  101. max_allowed_packet = 8M
  102. #二进制缓冲区日志大小
  103. binlog_cache_size = 1M
  104. #MEMORY引擎单表大小
  105. max_heap_table_size = 1024M
  106. #每个临时表大小
  107. tmp_table_size = 2M
  108. #每客户端索引和表查询数据缓冲区大小
  109. read_rnd_buffer_size = 2M
  110. #全表扫描数据缓冲区大小
  111. read_buffer_size = 2M
  112. #批量写入缓冲区大小
  113. bulk_insert_buffer_size = 16M
  114. #每客户端排序数据缓冲区大小
  115. sort_buffer_size = 256K
  116. #每客户端join数据缓冲区大小
  117. join_buffer_size = 512K
  118. #关闭查询缓存(QC)
  119. #query_cache_size = 0
  120. #query_cache_type = 0
  121. #mysql事务隔离级别
  122. #transaction_isolation = READ-COMMITTED
  123. #记录管理语句
  124. #log_slow_admin_statements = 1
  125. #记录复制语句
  126. #log_slow_slave_statements = 1
  127. #记录警告日志
  128. #log_warnings = 1
  129. #配置表名不区分大小写 1:不区分
  130. #lower_case_table_names = 1

5 测试
#启动服务
service mysqld start
#测试连接
./mysql/bin/mysql -uroot
#加入环境变量,编辑 /etc/profile,这样可以在任何地方用mysql命令了
export PATH=$PATH:/opt/mysql/bin
source /etc/profile
#启动mysql
service mysqld start
#关闭mysql
service mysqld stop
#查看运行状态
service mysqld status

6 远程连接的用户权限
解决1:更改 ‘mysql’数据库’user’表’host’项,从’localhost’改成 ‘%’。
./mysql/bin/mysql -uroot
select 'host' from user where user='root';
update user set host = '%' where user='root'; 设置外网可以访问
update user set authentication_string=password('123456') where user='root'; 修改密码
flush privileges;
解决2:直接授权
复制代码代码如下:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
5.2 安装时的一些错误
-bash: ./scripts/mysql_install_db: /usr/bin/perl: bad interpreter: 没有那个文件或目录

解决:yum -y install perl perl-devel
Installing MySQL system tables…./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决:yum -y install libaio-devel
7 设置开机启动

  1. ##将服务文件复制一份到init.d下,并重命名为mysqld
  2. cp /data/mysql/support-files/mysql.server /etc/init.d/mysqld
  3. ##对文件赋予执行权限
  4. chmod +x /etc/init.d/mysqld chmod 777 /etc/init.d/mysqld
  5. ##增加mysqld服务
  6. chkconfig --add mysqld
  7. ##查询mysqld服务情况
  8. chkconfig --list mysqld
  9. mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off 默认的运行级别为2,3,4,5
  10. ##如果3,4,5 为off:
  11. chkconfig --level 345 mysqld on
  12. ##重启服务器验证:reboot

三,MySql配置文件

四,MySql存储引擎

1,查看命令
2,MyISAM和InnoDB
3,阿里巴巴,淘宝