mysql安装及主从库配置
一、搭建单个实例
1.安装依赖包
yum install cmake make gcc gcc-c++ biso ncurses ncurses-devel
2.手动创建创建数据目录
cd /usr/local/
mkdir mysql
cd mysql/
3.新建mysql用户组和用户,并改变新建数据目录的属组和属主:
groupadd mysql
useradd -r -g mysql mysql
cd /usr/local/
chown -R mysql:mysql ./mysql/
4、下载、解压安装包
mkdir -p /usr/local/soft
cd /usr/local/soft
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
解压:
tar -zxf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
5、将解压的复制到/usr/local/mysql目录
cp -r mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql
6、安装数据库
切到mysql目录
cd /usr/local/mysql
安装数据库
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
将生成的临时密码记录下来
执行以下命令创建RSA private key
bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
7、修改文件目录权限
修改当前目录拥有者为mysql用户
chown -R mysql:mysql ./
修改当前data目录拥有者为mysql用户
chown -R mysql:mysql data
8、配置文件修改
vi /etc/my.cnf
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
#不区分大小写
lower_case_table_names = 1
#不开启sql严格模式
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql/data/mysqld.pid
修改vim /etc/init.d/mysqld添加路径 在46行
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
9、添加开机启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
加入开机启动
chkconfig --add mysqld
10、启动mysql
service mysqld start
11、登录mysql,修改root密码
登录
mysql -uroot -p 上面初始化时的密码
如果出现错误需要添加软连接
ln -s /usr/local/mysql/bin/mysql /usr/bin
修改root密码
alter user 'root'@'localhost' identified by 'root';
flush privileges; #刷新权限
设置允许远程连接数据库
update user set user.Host='%' where user.User='root';
flush privileges;
二、搭建主从
1、从库也先搭建单个实例
2、修改主从库配置文件vi /etc/my.cnf
log-bin=//usr/local/mysql/binlog
server-id=1 ##主从库设置不一样即可
修改配置文件后,重启服务
service mysqld restart
同时,主库上创建主从同步账号
mysql -uroot -proot123
grant replication slave on *.* to 'repl'@'%' identified by 'repl123';
flush privileges;
验证:
mysql -urepl -prepl123
3、查看主库当前的二进制日志pos:
mysql -uroot -proot123
mysql> show master status;
mysql> show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000001 | 1304 | cmdb | |
+---------------+----------+--------------+------------------+
row in set (0.00 sec)
4、在从库上mysql命令行执行
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.**.**',
MASTER_USER='repl',
MASTER_PASSWORD='repl123',
MASTER_PORT=3306,
MASTER_LOG_FILE='0.000001', #主数据库日志文件名
MASTER_LOG_POS=1304, #主数据库Position
MASTER_CONNECT_RETRY=60;
启动slave
mysql>start slave;
查看slave同步状态
mysql>show slave status \G;
在这里主要是看
Slave_IO_Running=Yes
Slave_SQL_Running=Yes
Second_Behind_Master=0
注意:Slave_IO_Running出现错误的原因有3个(Slave_IO_Running:Connecting)
1.网络不通
2.密码不对(去主库验证下能否登录)
3.pos不对(第3步的查看结果)