mysql 5.5 5.7 源码和yum版本详细安装教程

Linux MYSQL 关系型数据库 v5.5

1. Mysql 概述:

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库

数据库的分类:
关系型数据库与非关系型数据库NOSQL

Mysql版本:

Mysql 5.1
Mysql 5.5
Mysql 5.6
mysql 5.7

8.1.2 常用数据库软件
 Oracle 世界三大
 Sybase
 Infomix
 SQL Server sybase和micrsoft共同开发
 MySQL
 PostgreSQL
 pgsql
 EnterpriseDB redhat注资
 MariaDB
 Memcachedb 存内存
 redis 支持内存缓存
 MongoDB
是一个介于关系型数据库和非关系型数据库之间的产品

MySQL,SQL 瑞典 MySQL AB 作者女儿名字命名

2. MYSQL事务工作原理:

可以能保证你做的一系列动作,要么全部成功。如果有一个操作失败,就回退到修改前。  
比如你要做下面几个操作:
1.删除表A中的某些记录;
2.向B添加一些记录;
3.修改C表中的一些数据;
-------------------------
使用事务,如果1,2都成功了,3却失败了。
就会回退到第1步执行前的样子,ABC表都没被修改。    

3.什么是关系型数据库

关系型数据库以行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表,一组表组成了数据库。表与表之间的数据记录有关系。用户用查询(Query)来检索数据库中的数据。一个Query是一个用于指定数据库中行和列的SELECT语句。关系型数据库通常包含下列组件:
关系型数据库使用结构化查询语句select语言
常见的olace mysql

特点:
优点:读写更多的是和磁盘交互,数据一致性好,安全
缺点:速度慢

什么是非关系统数据库?
     非关系型数据库也被称为NoSQL数据库,NoSQL的本意是Not only sql,指的是非关系型数据库,
     非关系型数据库是关系统数据库的一个补充

     动态请求越来越多,对数据库的要求越来越高,而传统的数据库它遵守的ACID的要求,(原子性、一致性、隔离性、持久性四大特性)保证数据安全和完整性,导致数据存储速度很慢,所以NOSQL数据库就出现了

    ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性  (Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必需要具有这四种特性,否则在事务过程 (Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。
     典型代表:Fackebook  Cassandra HBase在使用   
     Redis  mond

     非关系型数据库程类:
    1. 键值key-value存储数据库
    典型的,Memcached redis memcacheDB
    2. 列存储(column-oriented)数据库
    黄型的:Cassandra HBase
    3. 面向文档(Document-Oriented)数据库
    黄型的:MongoDB  CouchDB
    4. 面向图形的数据库

4. mysql的特点:

    1. mysql性能卓越,服务稳定,很少出现异常宕机
    2. mysql开放源码且无版本制约,自主性及使用成本低
    3. mysql历史悠久,社区及用户非常活跃
    4. mysql软件体积小,安装简单易维护
    5. mysql品牌口碑效应
    6. mysql支持多种操作系统,提供多种API接口

6.数据类型

数值类型
整数类型        字节       范围(有符号)      范围(无符号)          用途 
数据类型    描述
INT(size)   -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。

字符串类型

数据类型    描述
CHAR(size) 
定长字符    保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。英文占用1个字符 汉字占用2个字符
注解:【定长】含义是指定的长度是多少,系统就占用多少长度,就算你内容比长度短,也照样占用那么多。超出了长度就会溢出,存在浪费空间
VARCHAR(size)
变长字符    保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。
注释:如果值的长度大于 255,则被转换为 TEXT 类型。
注解:【变长】含义是指指定的长度是多少,系统不会占用相同长度,而是根据内容的长度来占用,比如指定20,只输入5个字符,则只占用5个字符,反之超出就会溢出。
TEXT    存放最大长度为 65,535 个字符的字符串。
Nchar() 保存固定长度的字符串(简体,繁体)。在括号中指定字符串的长度。最多 255 个字符。
Nvarchar()  

日期和时间类型
类型     大小(字节)     范围               格式          用途 
 DATE       4        1000-01-01/9999-12-31 YYYY-MM-DD    日期值 

7.mysql发布版本

Alpha版:开发测试版
Beta版:测试完成后的版本
RC版:根据Beta版的bug修复后的版本
GA版:对外发布的正式版本

8.mysql版本选择

1. 稳定版:选择开源的社区版的稳定版GA版本
2. 产品线:可以选择5.1或5.5   互联网公司主流5.5  其次5.1和5.6
3. 选择Mysql数据库GA版发布后6个月以上的GA版本
4. 要选择前后几个月没有大BUG修复的版本,而不是大量修复BUG的集中版本
5. 最好向后较长时间没有更新发布的版本
6. 要考虑开发人员开发程序使用的版本是否兼容你选的版本
7. 作为内部开发测试数据库环境,跑大概3-6个月的时间
8. 优先企业非核心业务采用新版本的数据库GA版本

9. Mysql 数据库引擎  MyISAM和InnoDB

9.1 mysql引擎分类
MyISAM  MySQL 5.0 之前的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务,支持表锁不支持行锁;
InnoDB  事务型数据库的首选引擎,支持ACID事务,支持行级锁定, MySQL 5.5 起成为默认数据库引擎;
BDB    源自 Berkeley DB,事务型数据库的另一种选择,支持Commit 和Rollback 等其他事务特性;
Memory  所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在 MySQL 重新启动时丢失;

mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------
| Engine        | Support | Comment                                      
+------------+---------+--------------------------------------------------
| ndbcluster    | NO      | Clustered, fault-tolerant tables                              
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                        
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) 
| CSV         | YES     | CSV storage engine                                         
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables    
| FEDERATED  | NO      | Federated MySQL storage engine                         
| ARCHIVE    | YES     | Archive storage engine                                 
| InnoDB      | YES     | Supports transactions, row-level locking, and foreign keys    
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance        
+------------+---------+--------------------------------------------------
9.2 MyISAM和innoDB
Mysql常用的两大引擎有MyISAM和innoDB,那他们有什么明显的区别呢,什么场合使用什么引擎呢?
MYSQL5.5.5以前的版本默认MyISAM,5.5以后的默认为InnoDB
MyISAM  类型的表强调的是性能,其执行数度比InnoDB类型更快,但不提供事务支持,如果是单独大量的读或写,MyISAM是更好的选择,支持表锁。但不支持行锁
InnoDB   提供事务支持事务,外部键等高级 数据库功能,执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,支持行锁。

表锁和行锁:表锁,指当你插入数据时,其它命令不能插入和操作
                        行锁,如果要插入一行数据时,会锁定当前行,其它行不影响
9.3MyISAM引擎特点
1. 不支持事务
2. 表级锁定
3. 读写互相阻塞:
4. 只会缓存索引、不会缓存数据
5. 读取速度较快,占用资源相对少
6. 不支持外键约束,但支持全文索引

适应场景:

1. 不需要事务支持的业务(例如银行,充值就不行)
2. 一盘为读数据比较多的应用,读写都频繁场景不适合,只适合读或写单个多
3. 读写并发访问相对较低的业务,纯读纯写都可以 (例如新闻,小说)
4. 数据修改相对较少的业务(阻塞问题)
5. 以读为主的业务,例如blog  图片信息数据库  
6. 对数据一致性要求不是非常高的业务
7. 硬盘资源比较差的机器

myisam引警优化

  1. 设置合适的索引(缓存机制)重复值少的列创建
  2. 调整读写优先级,根据实际需求确保重要操作更优先执行
  3. 启用廷迟插入改善大批量写入性能(降低写入频率,尽可能多条数据一次性写入)
  4. 尽量顺序操作让insert数据都写入到尾部,减少阻塞
  5. 分解大的操作,降低单个操作的阻塞时间
  6. 降低并发数,减少对mysql访问,某些高并发场景通地应用进行排队队列机制

InnoDB引擎特点

  1. 支持事务: 支持4个事务隔离级别,支持多版本读
  2. 行级锁定 更新时一般是锁定当前行,通过索引实现,全表扫描仍然会是表锁,注意间隙锁的影响
  3. 读写阻塞与事务隔离级别相关
  4. 具有非常高效的缓存特性,能缓存索引,也能缓存数据
  5. 整个表和主键以cluster方式存储,组成一颗平衡树
  6. 所有Secondary index都会保存主键信息
  7. 支持分区,表空间
  8. 支持外键约束,不支持全文索引5.5以前,以后支持
  9. 对硬件资源要求比较高

生产场景:

1. 需要事件支持的业务
2. 行级锁对高并发有很好的适应能力,但需要确保查询是通过索引完成的
3. 数据读写较为频繁的场景,如,BBS 微博
4. 数据一致性要求高的业务,
5. 硬件设备内存较大,提高利用率

查看表使用的引擎:show create table test_t0;

MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但不提供事务支持,如果执行大量的SELECT(查询)操作,MyISAM是更好的选择,支持表锁。
InnoDB提供事务支持事务,外部键等高级 数据库功能,执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,支持行锁。

修改MySQL引擎的方法

   方法1: mysql命令语句修改

创建后引擎的更改
alter table user engine=INNODB;

   方法2:使用sed对备份内容进行引擎转换

1. mysqldump -uroot -p discuz > /backup/discuz.sql
2. sed -e 's/MyISAM/InnoDB/g' discuz.sql > discuz2.sql
3. mysql -uroot -p discuz<discuz2.sql

   方法3: mysql_convert_table_fromat命令修改

mysql_convert_table_fromat -user=root --password=12346 --engine=MyISAM discuz user

   方法4:批量修改所有表的引擎

通过mysql -e 显示所有表,然后提取表名,能过for循环将所有表的引擎修改

#!/bin/bash
TABLES=$(mysql -e "use bbs;show tables;;"| awk '{print $0}')
for table in $TABLES
do
mysql -e "use bbs;alter table $table ENGINE=InnoDB;"
done

 方法5:修改默认引擎
设置InnoDB为默认引擎:在配置文件my.cnf中的 [mysqld] 下面加入
default-storage-engine=INNODB  
如果添加innodb引擎报错,需要执行如下命令:
删除/mysql/data目录下的ib_logfile0,ib_logfile1文件即可。

10.Mysql 安装
-DCMAKE_INSTALL_PREFIX=dir_name 安装的主目录
-DDEFAULT_CHARSET   字符集,默认字符集是latin1
-DDEFAULT_COLLATION=collation_name  服务校对,默认的是latin1_swedish_ci,可以通过SHOW COLLATION语句查看哪个校对匹配的字符集
-DENABLED_LOCAL_INFILE  是否打开LOAD DATA INFILE的LOCAL参数
-DWITH_INNOBASE_STORAGE_ENGINE=1    将INNODB存储引擎编译进去
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1    将FEDERATED存储引擎编译进去
-DWITH_BLACKHOLE_STORAGE_ENGINE=1   将BLACKHOLE存储引擎编译进去
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1  不编译EXAMPLE存储引擎
-DWITH_PARTITION_STORAGE_ENGINE=1   将分区存储引擎编译进去
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1  将Performance Schema(性能视图)存储引擎编译进去
-DCOMPILATION_COMMENT=string    编译环境描述
-DWITH_READLINE=bool    是否使用readline库
-DSYSCONFDIR=dir_name   my.cnf参数文件的路径
-DMYSQL_UNIX_ADDR=file_name Unix socket文件的路径,socket文件用于服务器监听连接,这个参数必须是绝对路径
-DENABLED_PROFILING=bool    是否开启profiling代码的查询(用于SHOW PROFILE and SHOW PROFILES语句)
-DMYSQL_DATADIR=dir_name    MySQL文件目录的路径,这个参数也可以在启动MySQL的时候带上--datadir参数进行设置
-DWITH_EXTRA_CHARSETS=name  指定额外的字符集,默认是all,包含所有的字符集。
-DINSTALL_BINDIR=dir_name   安装用户程序的路径,默认路径是DCMAKE_INSTALL_PREFIX/bin
-DINSTALL_DOCDIR=dir_name   安装文档的路径,默认路径是DCMAKE_INSTALL_PREFIX/doc
-DINSTALL_INCLUDEDIR=dir_name   安装头文件的路径,默认路径是DCMAKE_INSTALL_PREFIX/include
-DINSTALL_LIBDIR=dir_name   安装库文件的路径,默认路径是DCMAKE_INSTALL_PREFIX/lib
-DINSTALL_MANDIR=dir_name   安装帮助手册的路径,默认路径是DCMAKE_INSTALL_PREFIX/man
-DINSTALL_PLUGINDIR=dir_name    安装插件的路径,默认路径是DCMAKE_INSTALL_PREFIX/lib/plugin
-DINSTALL_SBINDIR=dir_name  安装mysqld服务端启动脚本的路径,默认路径是DCMAKE_INSTALL_PREFIX/bin
-DINSTALL_SCRIPTDIR=dir_name    初始化MySQL数据库的数据文件路径的mysql_install_db脚本路径,默认路径是DCMAKE_INSTALL_PREFIX/scripts
-DINSTALL_SQLBENCHDIR=dir_name  安装sql-bench的路径,默认路径是DCMAKE_INSTALL_PREFIX
-DINSTALL_SUPPORTFILESDIR=dir_name  安装支持文件的路径,默认路径是DCMAKE_INSTALL_PREFIX/support-files
-DMYSQL_TCP_PORT=port_num   服务器监听TCP/IP连接的端口,默认是3306
10.1版本源码安装
wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.63.tar.gz 
tar xzf mysql-5.1.63.tar.gz ;cd mysql-5.1.63 

安装报错: checking for termcap functions library... configure: error: No curses/termcap library found
解决方法: yum install ncurses-devel  -y 

安装依赖:yum -y install ncurses-devel perl-Module-Install.noarch

编译参数1
./configure --prefix=/usr/local/mysql \
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock \
--enable-assembler \
--enable-thread-safe-client \
--with-mysqld-user=mysql \
 --with-big-tables \
--with-pthread \
--with-extra-charsets=complex \
--with-ssl \
 --with-embedded-server \
--enable-local-infile \
--with-plugins=partition,innobase \
--with-plugin-PLUGIN \
make && make install

编译参数2
./configure --prefix=/usr/local/mysql \
--with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock \
--localstatedir=/usr/local/mysql/var \
--enable-assembler \
--with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static \
--with-pthread \
--enable-static \
--with-big-tables \
--without-ndb-debug \
--with-charset=utf8 \
--with-extra-charsets=all \
--without-debug \
--enable-thread-safe-client \
--enable-local-infile \
--with-plugins=max \
--with-embedded-server \
--with-ssl \
make && make install
  1. 配置系统服务

    生成配置文件
    cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

    配置MYSQL服务为系统服务
    cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld

    1. 设置开机启动
      chkconfig --add mysqld # 增加服务
      chkconfig --level 345 mysqld on # 增加开机项

    2. 建立系统账号
      useradd mysql

    3. 过入mysql安装目录
      cd /usr/local/mysql
      chown -R mysql.mysql /usr/local/mysql # 将安装目录所有者权限设为mysql用户
      /usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/var --basedir=/usr/local/mysql # 初始化数据库 --datadir=指定数据目录 --basedir=指定数据基础目录
      chown -R mysql.mysql var # 修改var所有者
      /usr/local/mysql/bin/mysqld_safe --user=mysql & # 服务后台启动

    5.5以上版本安装方式:

    安装依赖:yum -y install cmake ncurses-devel perl-Module-Install.noarch

    useradd mysql -s /sbin/nologin

    mkdir -p /data/mysql
    chown -R mysql:mysql /data/mysql

    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
    -DMYSQL_DATADIR=/data/mysql \
    -DSYSCONFDIR=/etc \
    -DMYSQL_USER=mysql \
    -DMYSQL_TCP_PORT=3306 \
    -DWITH_XTRADB_STORAGE_ENGINE=1 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DWITH_PARTITION_STORAGE_ENGINE=1 \
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
    -DWITH_MYISAM_STORAGE_ENGINE=1 \
    -DWITH_READLINE=1 \
    -DENABLED_LOCAL_INFILE=1 \
    -DWITH_EXTRA_CHARSETS=1 \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DEXTRA_CHARSETS=all \
    -DWITH_BIG_TABLES=1 \
    -DWITH_DEBUG=0
    make -j8 && make install -j8

    初始化
    cd /usr/local/mysql
    ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

    添加服务
    cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
    chmod 755 /etc/init.d/mysqld
    chkconfig mysqld on

    修改启动服务
    vi /etc/rc.d/init.d/mysqld
    basedir=/usr/local/mysql
    datadir=/data/mysql
    :wq!

    bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

    修改配置文件
    vim /etc/my.cnf
    datadir=/data/mysql
    :wq

    service mysqld start

    添加环境变量
    vi /etc/profile
    export PATH=$PATH:/usr/local/mysql/bin
    :wq!

    添加sock
    source /etc/profile
    ln -s /var/lib/mysql/mysql.sock /tmp/

    安装报错:
    Curses library not found. Please install appropriate package,

    按照错误提示,Debian/Ubuntu下需要安装libncurses5-dev;Redhat下需要安装ncurses-devel ,检查是否安装了ncurses包,如下所示,已经安装了ncurses-5.5-24.20060715,但是缺少ncurses-devel包。

    yum install ncurses-devel -y

    安装了ncurses-devel包后,删除CMakeCache.txt,然后重新编译,编译成功,问题解决!

    预编译:
    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql/ -DMYSQL_DATADIR=/home/mysql/data/ -DEFAULT_CHARSET=utf8 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DWITH_DEBUG=0 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_USER=mysql
    make && make install

    这些参数的意思:
    -DCMAKE_INSTALL_PREFIX=/data/mysql 准备安装到那里
    -DEFAULT_CHARSET=utf8 默认的字符集
    -DMYSQL_TCP_PORT=3306 数据库的监听端口
    -DMYSQL_UNIX_ADDR=/tmp/mysql3306.sock 本机连回数据库的unix socket
    -DWITH_DEBUG=0 关闭debug模式
    -DWITH_INNOBASE_STORAGE_ENGINE=1 打开innodb引擎

    项目删除:
    CMake 默认不提供 uninstall 这个 target,想要的话,输入:

    xargs rm < install_manifest.txt

5.7以上版本的配置方式
    http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz

    http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.10.tar.gz

cd mysql-5.7.11
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DDOWNLOAD_BOOST=1 \  #从MySQL 5.7.5开始Boost库是必需的
-DWITH_BOOST=../boost_1_59_0 \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=1

make -j `grep processor /proc/cpuinfo | wc -l` #编译很消耗系统资源,小内存可能编译通不过
make install

初始化数据库
注:
1.  之前版本mysql_install_db是在mysql_basedir/script下,5.7放在了mysql_install_db/bin目录下,且已被废弃
2.  "--initialize"会生成一个随机密码(~/.mysql_secret),而"--initialize-insecure"不会生成密码
3.  --datadir目标目录下不能有数据文件

初始化:/usr/local/mysql/bin/mysqld --initialize --user=mysql 
起服务:/usr/local/mysql/bin/mysqld_safe --user=mysql &
10.2yum安装
https://dev.mysql.com/doc/refman/5.5/en/upgrading.html

release配置yum源:
官网:https://dev.mysql.com/downloads/repo/yum/

下载:
wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm

安装:
rpm -ivh mysql57-community-release-el7-11.noarch.rpm   (此版本源中包括5.5  5.6  5.7 )

【使用下面命令能关闭或开启mysql版本repo】
开启版本: yum-config-manager --enable mysql56-community
关闭版本: yum-config-manager --disable mysql57-community

yum-config-manager命令找不到的解决方法
这个是因为系统默认没有安装这个命令,这个命令在yum-utils 包里,可以通过命令yum -y install yum-utils 安装就可以了

安装命令各版本都一样:
yum install mysql mysql-devel mysql-server mysql-libs

注意: 安装5.5版本以上时,会提示依赖包libmysqlclient.so.16,请下载下列依赖包安装
下载链接:https://dev.mysql.com/downloads/mysql/5.5.html#downloads

Centos 6无法安装mysql5.5以上版本,需要事先解决依赖,至此未能解决。


################## mysql5.7以上默认有安全密码 #######################################

tail /var/log/mysqld.log
找到以下此条语句
[Note] A temporary password is generated for root@localhost: ZhweHhMyR8#l

登录后修改密码
alter user 'root'@'localhost' identified by '123456';


#####################################################################################

10.3Mysql 服务与端口
service mysqld  restart

端口tcp:3306

/usr/local/mysql/share/mysql.server stop –socket=/var/lib/mysql/mysql.sock &  启动后台服务

/usr/loacl/mysql/bin/mysql/mysql.server stop   停止源码mysql服务

mysqladmin shutdown  平滑关闭mysql服务
10.3Mysql 配置文件 /etc/my.conf
[root@localhost support-files]# ls -l my*.cnf 
-rw-r--r--. 1 root root  4680 4月  25 01:05 my-huge.cnf  4
-rw-r--r--. 1 root root 19731 4月  25 01:05 my-innodb-heavy-4G.cnf  5
-rw-r--r--. 1 root root  4654 4月  25 01:05 my-large.cnf  3
-rw-r--r--. 1 root root  4665 4月  25 01:05 my-medium.cnf   1
-rw-r--r--. 1 root root  2433 4月  25 01:05 my-small.cnf  2

以上编号是指配置从小到大的排列 也是根据硬盘来选择相应的配置文件1-5

[mysqld]                                        // 服务器端配置
 datadir=/data/mysql                           // 数据库目录
 socket=/var/lib/mysql/mysql.sock              // 通信设置  
 user=mysql                                // 使用mysql用户启动
symbolic-links=0                           // 是否支持快捷方式
 log-bin=mysql-bin                          // 开启bin-log日志
 server-id = 1                               // mysql服务ID
 auto_increment_offset=1                     // 1~65535  自增长字段
 auto_increment_increment=2                  // 1~65535 自增长字段每次递增的量 默认为1
 bind-address=10.204.3.4                      // 接口监听地址

socket = /tmp/mysql.sock     # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)
port             = 3306      # 指定MsSQL侦听的端口 
key_buffer       = 384M      # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。索引块是缓冲的并且被所有的线程共享,key_buffer的大小视内存大小而定。
table_cache      = 512       # 为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销
sort_buffer_size = 2M        # 每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MB
read_buffer_size = 2M        # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
query_cache_size = 32M             # 指定MySQL查询结果缓冲区的大小
read_rnd_buffer_size    = 8M        # 改参数在使用行指针排序之后,随机读用的。
myisam_sort_buffer_size = 64M       # MyISAM表发生变化时重新排序所需的缓冲
thread_concurrency      = 8         # 最大并发线程数,取值为服务器逻辑CPU数量×2,如果CPU支持H.T超线程,再×2
thread_cache            = 8         # #缓存可重用的线程数
skip-locking                        # 避免MySQL的外部锁定,减少出错几率增强稳定性。 
[mysqldump]
max_allowed_packet      =16M      # 服务器和客户端之间最大能发送的可能信息包

skip-name-resolve
lower_case_table_names=1
innodb_file_per_table=1
back_log = 50
max_connections = 300
max_connect_errors = 1000
table_open_cache = 2048
max_allowed_packet = 16M
binlog_cache_size = 2M
max_heap_table_size = 64M
sort_buffer_size = 2M
join_buffer_size = 2M
thread_cache_size = 64
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 2M
ft_min_word_len = 4
default-storage-engine = innodb
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
log-bin=mysql-bin
binlog_format=mixed
slow_query_log
long_query_time = 1
key_buffer_size = 8M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 200M
innodb_data_file_path = ibdata1:10M:autoextend
innodb_file_io_threads = 8
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 16M
innodb_log_file_size = 512M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 60
innodb_lock_wait_timeout = 120

master端
--binlog-do-db 二进制日志记录的数据库(多个数据库用,分隔)
--binlog-ignore-db 二进制日忽略的数据库(多个数据库用,分隔)
replicate-ignore-db=mysql 忽略同步库

在replication的slave端还有一下6个参数

--replication-do-db  设定需要复制的数据库(多个数据库用,分隔)
--replication-ignore-db  设定忽略复制的数据库(多个数据库用,分隔)
--replication-do-table 设定需要复制的表(多个表用,分隔)
--replication-ignore-table  设定忽略复制的表(多个表用,分隔)
--replication-wild-do-table同replication-do-table功能一样,但可以加通配符
--replication-wild-ignore-table=mysql.%  同replication-ignore-table功能一样 在从上添加测试通过

[mysqld_safe]                                      // mysql服务安全启动配置
 log-error=/var/log/mysqld.log  
 pid-file=/var/run/mysqld/mysqld.pid   
 replicate-do-db =jfedu                             // 允许slave同步哪个库
 key_buffer_size=16M                 指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。一般为内存的50% show variables like ‘key_buffer_size‘;查询缓冲大小
max_connections = 3000               # 每个客户端连接最大的错误允许数量,如果达到了此限制,这个客户端将会被MySQL服务阻止直到执行了”FLUSH  HOSTS”或者服务重启.
innodb_buffer_pool_size=              对于InnoDB表来说,innodb_buffer_pool_size的作用就相当于key_buffer_size对于MyISAM表的作用一样。InnoDB使用该参数指定大小的内存来缓冲数据和索引。对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%。
内存32G,24G
根据MySQL手册,对于2G内存的机器,推荐值是1G(50%)。

basedir      = path          # 使用给定目录作为根目录(安装目录)。
datadir      = path          # 从给定目录读取数据库文件。
pid-file     = filename      # 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); 
[mysqldump]
quick
max_allowed_packet = 256M
[mysql]
no-auto-rehash
prompt=\\u@\\d \\R:\\m>
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout

转载于:https://blog.51cto.com/zhongliang/2152916

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值