主从的概念
主 – 主机,负责对数据库的读写操作,数据类型主要是innordb
从 – 从机,负责对数据库的读操作,数据库类型主要是myisam
主从复制即是从机拷贝主机的数据,而用户对数据库的读操作只通过从机即可,因为myisam的的强大之处在于读操作,一个主机可以配置多个从机。
1.3 配置
1.3.1 主配置(master_mysql配置)
nano -w /etc/mysql/mysql.conf.d/mysqld.cnf
# 设置主服务器的ID
server-id = 100
# binlog日志文件名
log_bin = /var/log/mysql/mysql-bin.log
# 日志文件有效期
expire_logs_days = 3
# 日志文件最大存储
max_binlog_size = 100M
# 要同步的数据库
binlog_do_db = mydatabase
1.3.2 配置完后,重启主库的mysql
service mysql restart
mysql -uroot -p ##登录mysql
GRANT REPLICATION SLAVE ON *.* to 'slavename'@'%' identified by 'password';
#授权给从数据库服务器%任何IP,也可以指定IP,登录用户名slavename,密码password
mysql>show master status ; ##查看主库的状态
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 7563 | mydatabase | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
1.3.3 配置从库服务器
nano -w /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 101
master_info_repository = table
relay_log_info_repository = table
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 2
sync_binlog=1
innodb_flush_log_at_trx_commit=2
max_binlog_size = 100M
slave-skip-errors=all
说明:设置成table意思是可以同步多台主机,slave-skip-errors可以忽略所有错误使之不会中断同步
#
replicate_wild_ignore_table =xmeng.%
replicate_wild_ignore_table =mysql.%
replicate_wild_ignore_table =sys.%
replicate_wild_ignore_table =information_schema.%
replicate_wild_ignore_table =performance_schema.%
#
replicate_wild_do_table =xmeng.calc_ckpv_hoursnow111
replicate_wild_do_table =xmeng.calc_ckpv_hoursnow113
replicate_wild_do_table =xmeng.calc_ckpv_hoursnow114
replicate_wild_do_table =xmeng.calc_ckpv_hoursnow115
replicate_wild_do_table =xmeng.calc_ckpv_hoursnow116
replicate_wild_do_table =xmeng.calc_ckpv_hours
replicate_wild_do_table =xmeng.calc_ckpv_day
#
replicate_wild_ignore_table忽略同步的数据表,replicate_wild_do_table要同步的数据库表
1.3.4 配置完后,重启从库的mysql
service mysql restart
mysql -uroot -p
CHANGE MASTER TO MASTER_HOST='192.168.0.102',MASTER_USER='slavename',MASTER_PASSWORD='password',MASTER_LOG_FILE='mysql-bin.000007',MASTER_LOG_POS=207078 for channel '001';
说明:host指要同步的主机IP,user是登录用户名,password是登录密码,channel是指定这个id后续好操作修改
相关操作:
show slave status\G;
start slave for channel '001';
stop slave for channel '001';
mysql> show slave status; ###Slave_IO_Running,Slave_SQL_Running 都为Yes的时候表示配置成功
1.4:验证主从
可以在主库上创建一个库,再在从库上刷新查看是否同步