安装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