一、环境:两台LINUX7 64位服务器;
IP:192.168.200.199,192.168.200.200,199为主,200为从。
二、原理:
主服务器(Master)负责网站写操作,从服务器负责读操作。主从服务器利用MySQL的二进制日志文件,实现数据同步。二进制日志由主服务器产生,从服务器响应获取同步数据库。
三、安装mysql
1.解压缩文件包
cd /home/install
tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
2.复制解压后的mysql目录到系统的本地软件目录
mv mysql-5.7.18-linux-glibc2.5-x86_64 /usr/local/mysql
3.删除系统中原有的mysql用户,再添加系统mysql组和mysql用户
userdel mysql
groupadd mysql
useradd -r -g mysql mysql
4.进入安装mysql软件目录
cd /usr/local/mysql
5.修改当前目录拥有者为mysql用户
chown -R mysql:mysql ./
6.进入support-files路径,发现没有默认的配置文件my_default.cnf,从网上找一个
cd /usr/local/mysql/support-files
vi my_default.cnf
7.my_default.cnf内容:
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# 一般配置选项
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character-set-server=utf8
back_log = 300
max_connections = 3000
max_connect_errors = 50
table_open_cache = 4096
max_allowed_packet = 32M
#binlog_cache_size = 4M
max_heap_table_size = 128M
read_rnd_buffer_size = 16M
sort_buffer_size = 16M
join_buffer_size = 16M
thread_cache_size = 16
query_cache_size = 128M
query_cache_limit = 4M
ft_min_word_len = 8
thread_stack = 512K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 128M
#log-bin=mysql-bin
long_query_time = 6
server_id=1
innodb_buffer_pool_size = 1G
innodb_thread_concurrency = 16
innodb_log_buffer_size = 16M
innodb_log_file_size = 512M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table = on
[mysqldump]
quick
max_allowed_packet = 32M
[mysql]
no-auto-rehash
default-character-set=utf8
safe-updates
[myisamchk]
key_buffer = 16M
sort_buffer_size = 16M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192
[client]
8.切换mysql用户,进入mysql路径,创建data数据文件夹,再进入bin路径,安装并初始化数据
su - mysql
cd /usr/local/mysql/bin/
mkdir data
./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
9.安装信息
10.切换为root用户,复制support-files路径下的my_default.cnf到/etc路径下,提示是否复盖,输入Y
su - root
cp -a my_default.cnf /etc/my.cnf
11.复制support-files路径下的mysql.server,到/etc/init.d/
cp -a mysql.server /etc/init.d/mysqld
12.进入到mysql bin路径下,查看当前是否有进程,如果有就kill掉,然后启动mysql服务
ps -A | grep mysql
/etc/init.d/mysqld start
13.连接mysql,进入mysql bin路径,使用root用户登陆,没有密码直接回车即可
./mysql -u root -p
14.修改数据库可以远程访问
use mysql
SET SQL_SAFE_UPDATES = 0; ##这一句必须要有,如果不执行这句数据库处在安全模式,不可以使用非主键的字段做为条件更新数据。
update user set host = '%' where user = 'root';
15.重起mysql服务
/etc/init.d/mysqld restart
16.修改主数据库192.168.200.199,/etc/my.cnf配置文件,并且重起
server-id=199
log-bin=mysqlmaster-bin.log
sync_binlog=1
/etc/init.d/mysqld restart
17.修从主数据库192.168.200.200,/etc/my.cnf配置文件,并且重起
server-id=200
log-bin=mysqlslave-bin.log
sync_binlog=1
/etc/init.d/mysqld restart
18.在主数据库上创建用于主从复制的账户
cd /usr/local/mysql/bin/
./mysql -uroot -p
msyql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.200.200' IDENTIFIED BY '111111';
19.在从数据库服务器上设置主数据库服务器向从数据库服务器同步
mysql> change master to master_host = '192.168.200.199',master_user='repl',master_password='111111',master_log_file='mysqlmaster-bin.000002',master_log_pos=730;
master_log_file,master_log_pos是在主数据库上执行查询得到的,不要写错了。
show master status;
20.开启从数据库的复制线程。
mysql> start slave;
21.查看同步状态
show slave status \G
Paste_Image.png
22.测试一下,在主数据库里插入一条数据试试,看看重数据库有没有
在主库上随便建一个表,插入几条数据,从数据可以同步过来。
网友评论