Mysql5.7.18的安装
#下载解压tar包
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
cd /usr/local/ && mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql
cd /usr/local/mysql && mkdir data
cd ..
groupadd mysql
useradd -r -s /sbin/nologin -g mysql mysql
chown -R mysql:mysql mysql
cd
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
mkdir -p /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
#修改mysql的启动文件如下
vim /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
#注册和初始化mysql数据库
cd /usr/local/mysql/bin
./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize-insecure
(没有生成root密码,去掉-insecure会生成root密码,在最后一行)
mv /etc/my.cnf /etc/my.cnf.bak
vim /etc/my.cnf
(自建mysql的配置文件,添加下面的几项)
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 一般配置选项
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
socket = /var/lib/mysql/mysql.sock
pid-file=/usr/local/mysql/mysql.pid
character-set-server=utf8
default-storage-engine=INNODB
[mysql]
socket = /var/lib/mysql/mysql.sock
no-auto-rehash
default-character-set=utf8
(以上为简单配置项,具体依据实际配置)
/etc/init.d/mysqld start
#重置root密码
cd /usr/local/mysql/bin
(方便使用时可建立ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql软连接)
./mysql -u root -p
set password=password('你想设置的root密码');
flush privileges;
exit;
主从配置
两台服务器IP
master:192.168.0.1
slave: 192.168.0.2
master主机上的操作;
修改配置文件
vim /etc/my.cnf
添加下面几行
[mysqld]
server-id=1(服务器的唯一指定id)
log-bin=mysql-bin(开启二进制日志)
/etc/init.d/mysqld restart(重启MySQL)
./mysql -uroot -p
>grant repliaction slave on *.* to mysync@'192.168.0.2' identified by '123456';
>flush privileges;
>show master status;(查看主机状态)
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001| 103 | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
(不要做任何操作,防止master的数据更改)
slave从服务器的操作
vim /etc/my.cnf
添加下面几行
[mysqld]
server-id=2
log-bin=mysql-bin(不是必须的,开启比较好一些)
/etc/init.d/mysql restart(重启MySQL)
./mysql -uroot -p
>change master to master_host=192.168.0.1,master_user='mysync',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=103(主机中查询的数值);
>start slave;
>show slave status\G(查询从服务器的链接情况,必须要满足两个'yes')
Slave_IO_State: Waiting for master to send event //I/O状态
Master_Host: 192.168.0.1 //主服务器ip
Master_User: mysync //具有复制权限的用户
Master_Port: 3306 //默认监听的端口
Connect_Retry: 60 //重试时间
Master_Log_File: mysql-bin.000001 //读取的二进制日志文件
Read_Master_Log_Pos: 103 //二进制日志中的位置
Relay_Log_File: relay-bin.000002 //当前读取的中继日志文件
Relay_Log_Pos: 581 //中继日志中事件的位置
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes //I/O线程已启动
Slave_SQL_Running: Yes //SQL线程已启动
................................
................................
Seconds_Behind_Master: 0 //落后主服务器的时间,单位秒
>exit;
(可以使用mysql> help change master to 查看需要的命令)
下面就是测试了在主库上建新库,查看从库是否也生成同样的库。
以上是基本的配置,详细配置可根据自己的需求来添加参数。