Mysql安装

安装mysql

1.yum 安装mysql

安装命令
yum install mysql-server
yum install mysql-client
安装目录固定,定制化差

2.源码安装mysql

优点:可以进行定制化

2.1检查是否安装了java

[root@i-8ejfksrr ~]# ps -ef|grep java
[root@i-8ejfksrr ~]# java -version

2.2下载文件,解压文件

从jdk官网下在相应的包
[root@i-8ejfksrr ~]# wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz
使用相应的软件将相应的软件上传到远程服务器
scp -r jdk-8u181-linux-x64.tar.gz root@服务器的地址
创建文件目录
[root@i-8ejfksrr ~]# mkdir -p /usr/java
将jdk相应安装包放到指定目录
[root@i-8ejfksrr ~]# mv jdk-8u181-linux-x64.tar.gz /usr/java
解压文件 
[root@i-8ejfksrr java]# tar -zxvf jdk-8u181-linux-x64.tar.gz

2.3添加环境变量

修改权限 
[root@i-8ejfksrr java]# chown -R root:root jdk1.8.0_181
配置环境变量 
[root@i-8ejfksrr java]# vi /etc/profile
添加内容如下:
export JAVA_HOME=/usr/java/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
生效文件
[root@i-8ejfksrr java]# source /etc/profile

2.4检验jdk是否安装成功

[root@i-8ejfksrr java]# java -version
如果出现 java的版本号表示安装成功

2.5检查mysql是否安装

检查一下是否安装了
[root@i-8ejfksrr ~]# ps -ef|grep mysqld   rpm -qa |grep -i mysql

2.6下载mysql相关文件,解压文件

[root@i-8ejfksrr ~]#wget https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
将文件运动到相应的文件 
[root@i-8ejfksrr ~]# mv mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz /usr/local
解压文件
[root@i-8ejfksrr local]# tar -zxvf mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
重新命名 
[root@i-8ejfksrr local]# mv mysql-5.6.41-linux-glibc2.12-x86_64 mysql

2.7添加用户

添加新的用户组 
[root@i-8ejfksrr local]# groupadd -g 101 dba
添加新的用户
[root@i-8ejfksrr local]#  useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
出现警告:useradd:警告:此主目录已经存在。不从 skel 目录里向其中复制任何文件。
需要将环境变量文件拷贝到 /usr/local/mysql目录下
切换用户 
[root@i-8ejfksrr local]#  su - mysqladmin 出现bash 没有环境变量,需要将环境变量拷贝过来
复制环境变量 cp /etc/skel/.* /usr/local/mysql   或者进入bash cp /etc/skel/.bash*  ~

2.8修改配置文件

创建配置文件 
[root@i-8ejfksrr local]#  cd /etc touch my.cnf
往my.cnf文件中填写如下内容:
    [client]
    port            = 3306
    socket          = /usr/local/mysql/data/mysql.sock
    [mysqld]
    port            = 3306
    socket          = /usr/local/mysql/data/mysql.sock
    skip-external-locking
    key_buffer_size = 256M
    sort_buffer_size = 2M
    read_buffer_size = 2M
    read_rnd_buffer_size = 4M
    query_cache_size= 32M
    max_allowed_packet = 16M
    myisam_sort_buffer_size=128M
    tmp_table_size=32M
    table_open_cache = 512
    thread_cache_size = 8
    wait_timeout = 86400
    interactive_timeout = 86400
    max_connections = 600
    # Try number of CPU's*2 for thread_concurrency
    thread_concurrency = 32
    #isolation level and default engine 
    default-storage-engine = INNODB
    transaction-isolation = READ-COMMITTED
    server-id  = 1
    basedir     = /usr/local/mysql
    datadir     = /usr/local/mysql/data
    pid-file     = /usr/local/mysql/data/hostname.pid
    #open performance schema
    log-warnings
    sysdate-is-now
    binlog_format = MIXED
    log_bin_trust_function_creators=1
    log-error  = /usr/local/mysql/data/hostname.err
    log-bin=/usr/local/mysql/arch/mysql-bin
    #other logs
    #general_log =1
    #general_log_file  = /usr/local/mysql/data/general_log.err
    #slow_query_log=1
    #slow_query_log_file=/usr/local/mysql/data/slow_log.err
    #for replication slave
    #log-slave-updates 
    #sync_binlog = 1
    #for innodb options 
    innodb_data_home_dir = /usr/local/mysql/data/
    innodb_data_file_path = ibdata1:500M:autoextend
    innodb_log_group_home_dir = /usr/local/mysql/arch
    innodb_log_files_in_group = 2
    innodb_log_file_size = 200M
    innodb_buffer_pool_size = 1024M
    innodb_additional_mem_pool_size = 50M
    innodb_log_buffer_size = 16M
    innodb_lock_wait_timeout = 100
    #innodb_thread_concurrency = 0
    innodb_flush_log_at_trx_commit = 1
    innodb_locks_unsafe_for_binlog=1
    #innodb io features: add for mysql5.5.8
    performance_schema
    innodb_read_io_threads=4
    innodb-write-io-threads=4
    innodb-io-capacity=200
    #purge threads change default(0) to 1 for purge
    innodb_purge_threads=1
    innodb_use_native_aio=on
    #case-sensitive file names and separate tablespace
    innodb_file_per_table = 1
    lower_case_table_names=1
    [mysqldump]
    quick
    max_allowed_packet = 16M
    [mysql]
    no-auto-rehash
    [mysqlhotcopy]
    interactive-timeout
    [myisamchk]
    key_buffer_size = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M
修改文件的权限
[root@i-8ejfksrr local]#    chown  mysqladmin:dba /etc/my.cnf 
[root@i-8ejfksrr local]#    chmod  640 /etc/my.cnf  
[root@i-8ejfksrr local]#    chown -R mysqladmin:dba /usr/local/mysql
[root@i-8ejfksrr local]#    chmod -R 755 /usr/local/mysql 
切换用户
[root@i-8ejfksrr local]#  su - mysqladmin  
创建文件
[mysqladmin@i-8ejfksrr ~]$ mkdir arch
执行安装db的脚本 
[mysqladmin@i-8ejfksrr ~]$  scripts/mysql_install_db  有可能需要安装perl ,可能是防火墙规则的配置出现问题(在使用云主机使用时,会出现这样的问题,使用虚拟机或者物理机不会出现这样的问题)
出现:Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 需要安装使用root用户进行安装 yum install libaio   yum install numactl-devel.x86_64

2.9安装用mysql以及相关配置

切换用户到mysqladmin:
[root@i-8ejfksrr local]#  su - mysqladmin
执行命令:
[mysqladmin@i-8ejfksrr ~]$ scripts/mysql_install_db  --user=mysqladmin --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 
配置重启开始服务
切换到root用户 将服务文件拷贝到init.d下,并重命名为mysql
[root@i-8ejfksrr local]# cd /usr/local/mysql
[root@i-8ejfksrr local]#  cp support-files/mysql.server /etc/rc.d/init.d/mysql 
赋予可执行权限 
[root@i-8ejfksrr local]#  chmod +x /etc/rc.d/init.d/mysql
添加服务  
[root@i-8ejfksrr local]#  chkconfig --add mysql  如果要删除服务 chkconfig --del mysql
开启服务 
[root@i-8ejfksrr local]# chkconfig  mysql on
修改配置文件
[root@i-8ejfksrr local]#  vi /etc/rc.local
在最后添加 su - mysqladmin -c "/etc/init.d/mysql start --federated"
切换到mysqladmin用户
[root@i-8ejfksrr local]#  su - mysqladmin
启动mysql并且监听事件
可以删除 my.cnf文件 rm -rf my.cnf
执行命令
[mysqladmin@i-8ejfksrr ~]$ mysqld_safe & 出现错误:
[1] 4584
[mysqladmin@i-8ejfksrr ~]$ 180923 22:57:59 mysqld_safe Logging to '/usr/local/mysql/data/hostname.err'.
180923 22:57:59 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
查看mysqld_safe命令所在的路径
[mysqladmin@i-8ejfksrr ~]$ which mysqld_safe
修改mysqladmin 用户的环境变量文件
[mysqladmin@i-8ejfksrr ~]$ vim .bash_profile
添加内容:
    export MYSQL_HOME=/usr/local/mysql
    export PATH=$MYSQL_HOME/bin:$PATH
切换到mysqladmin账号,使用命令
[mysqladmin@i-8ejfksrr ~]$ mysqld_safe & 直接回车
查看是否启动成功:
[mysqladmin@i-8ejfksrr ~]$ ps -ef|grep mysqld 
查看到:
514       4584     1  0 22:57 pts/0    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe
514       5227  4584  0 22:57 pts/0    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/hostname.err --pid-file=/usr/local/mysql/data/hostname.pid --socket=/usr/local/mysql/data/mysql.sock --port=3306
root      7201  2146  0 23:10 pts/0    00:00:00 su - mysqladmin
514       8646  7202  0 23:13 pts/0    00:00:00 grep mysql
表示已经启动成功

2.10修改用户的密码

切换到mysqladmin 用户,使用
[mysqladmin@i-8ejfksrr ~]$ mysql 登陆数据库(无密码登陆)
查看所有的数据库 
mysql>show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
切换数据库
mysql> use mysql
mysql> select host,user,password from user;
+------------+------+----------+
| host       | user | password |
+------------+------+----------+
| localhost  | root |          |
| i-8ejfksrr | root |          |
| 127.0.0.1  | root |          |
| ::1        | root |          |
| localhost  |      |          |
| i-8ejfksrr |      |          |
+------------+------+----------+
设置用户的密码:
mysql> update user set password=password('123456') where user='root';
删除空用户
mysql> delete from user where user='';
刷新权限
mysql> flush privileges;
重新登陆数据库
mysql -u localhost -p123456 -h 指定主机
创建数据库
mysql> create database xiaoyao;
对数据库进行权限设置
mysql> grant all privileges on xiaoyao.*(数据库) to root(用户)@'%'(指定ip或者网段) identified by '123456'(密码);
刷线权限
mysql> flush privileges;

3.主从复制

需要安装两台mysql服务器,安装可以参考上面的步骤,确定主机的主从关系

3.1修改配置文件:

vi /etc/my.cnf
开启binlog
log-bin=/usr/local/mysql/arch/mysql-bin #开启binlog
binlog_format=MIXED #binlog格式
server-id=1 #要唯一,两个主机的server-id不能一样

3.2修改master

进入数据库,创建进行复制的用户:repl
mysql>grant replication slave  on *.* to 'repl'@'%' identified by 'repl';
#grant replication slave on  数据库.表名 to '用户'@'主机' identified by '密码';
mysql>show master; #查看当前的日志文件,以及写到的位置

3.3修改slave

需要指定master的主机,端口号,用户,密码,读取那个文件,从那个位置读
mysql>change master  to master_host='master主机的ip',master_port=3306,master_user='repl',master_passord='repl',master_log_fle='mysql-bin.000003',master_log_pos=16146;
mysql>start slave;
mysql>show slave status\G;
#在使用下面命令的时候,需要先stop slave。
mysql>reset salve all;

3.4slave开启可读

mysql>show global variables like '%read%';
mysql>set gloval read_only=1;

3.5其他命令

mysql>select current_user(); #查询当前用户;
mysql>flush logs; #刷新log,位置滚动
mysql>reset master;日志文件从0开始读取。
mysql>set gloabl_sql_salve_skip_counter=N; #跳过几个sql语句

4.备份还原

##4.1备份还原数据库
    mysqldump -hlocalhost -P3306 -uroot -p 123456 --add-locks --add-drop-database -B xiaoyao> xiaoyao.sql
    mysql -uroot < xiaoyao.sql

4.2备份还原数据表

    mysqldump -hlocalhost -P3306 -uroot -p 123456 --add-locks -q xiaoyao.test > test.sql
    mysql>use xiaoyao;
    mysql>source test.sql;

4.3压缩备份与还原

    mysqldump -hlocalhost -P3306 -uroot -p 123456 --add-locks -q xiaoyao.test > outputfile.sql.gz
    gunzip <  outputfile.sql.gz|mysql -uroot -p123456

5.numa

numa中,虽然内存直接attach在自己cpu上,但是由于内存被平均分配在各个机器上,只有当前cpu访问滋生直接attach内存对应的物理地址时,才会有较短的相应时间,而如果访问其他CPU attach内存的数据时,就需要通过inter-connect通道防伪,相应时间就相比之前变慢了。
相关解决方案:
a. 在mysql5.6.27版本之前,启动带参数
 numctl --interleave=all ./bin/mysqld_sagfe &
b.mysql5.6.27版本之后,新增了一个选项 innodb_numa_interactive,只需要重启mysqld实例,无需重启os。
c.在bios设置中可以关闭numa,重启机器
d.修改grub配置文件,重启机器
e.将 /proc/sys/vm/swapiness设置为0.
    立即生效:
        cat /proc/sys/vm/swapiness
        sysctl vm.swapiness=10
    永久生效:
        echo "vm.swapiness=0">> /etc/sysctl.conf
        sysctl -p
请参考:http://www.cnblogs.com/janehoo/p/7725042.html
http://www.mamicode.com/info-detail-2315272.html
https://blog.csdn.net/jacson_bai/article/details/45873163
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342