mysql离线安装

离线mysql数据库安装

mysql二进制安装包下载,可选Linux - Generic或对应版本
下载地址

先处理配置文件,/etc/my.cnf内容,安装前放置在/etc下

1
2
3
4
5
6
7
8
9
10
11
[client]
socket=/var/lib/mysql/mysqld.sock

[mysqld]
user=root
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysqld.sock
log-error=/var/lib/mysql/mysql.log
pid-file=/var/lib/mysql/mysqld.pid
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

安装

1
2
3
4
5
6
7
tar -zxvf mysql-8.0.21-linux-glibc2.12-x86_64.tar.gz
mv mysql-8.0.21-linux-glibc2.12-x86_64 /usr/local/mysql
mkdir /var/lib/mysql
cd /usr/local/mysql/bin
./mysqld --initialize
ln -s /usr/local/mysql/bin/mysql /usr/bin
ln -s /usr/local/mysql/bin/mysqldump /usr/bin

查看初始密码

1
cat /var/lib/mysql/mysql.log

找到这一行,复制密码

1
A temporary password is generated for root@localhost: fagaghahh@$

修改密码

1
2
3
4
mysql -u root -p

ALTER USER 'root'@'localhost' IDENTIFIED with mysql_native_password BY 'mysql123456';
flush privileges;

停止并移除原 service服务(避免冲突)

1
2
3
service mysql stop
chkconfig mysql off 2>/dev/null
rm -f /etc/init.d/mysql

创建 MySQL service 文件:

1
vim /etc/systemd/system/mysqld.service

内容如下(与当前 my.cnf 路径和安装目录完全匹配):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=forking
User=root
Group=root

ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
ExecStop=/usr/local/mysql/bin/mysqladmin --defaults-file=/etc/my.cnf shutdown
PIDFile=/var/lib/mysql/mysqld.pid

Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

重新加载 systemd 并启动 MySQL

1
2
3
systemctl daemon-reexec
systemctl daemon-reload
systemctl start mysqld

mysql配置主从

主服务器mysql配置文件 /etc/my.cnf添加配置

1
2
3
[mysqld]
log-bin=mysql-bin //[必须]启用二进制日志
server-id=111 //[必须]服务器唯一ID

从服务器mysql配置文件 /etc/my.cnf

1
2
[mysqld]
server-id=222 //[必须]服务器唯一ID

两台服务器重启

1
service mysql restart

在主服务器上建立帐户并授权slave:

1
mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'mysql123456';

登录主服务器的mysql,查询master的状态

1
2
3
4
5
6
7
mysql>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 308 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

配置从服务器Slave:

1
2
mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='mysql123456',master_log_file='mysql-bin.000004',master_log_pos=308;
mysql>start slave;

检查从服务器复制功能状态:其中的两个参数都为yes说明生效

1
2
3
mysql> show slave status\G
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES