Linux下搭建mysql主从服务器方法
1.设置数据库同步
主数据库M1: 192.168.1.106
从数据库M2: 192.168.1.107
安装mysql,主数据库M1和M2都操作,可参考:https://www.funet8.com/2292.html
2.操作安装相同版本的MariaDB。 这里我使用yum安装
1) master:
rpm –import http://yum.mariadb.org/RPM-GPG-KEY-MariaDB
echo ‘# MariaDB 10.0 CentOS repository list – created 2014-03-15 08:00 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1′>>/etc/yum.repos.d/MariaDB.repo
yum clean all
#Installing MariaDB with YUM#######################################
#yum -y install MariaDB-server MariaDB-client
#加入启动项#################################################
#chkconfig –levels 235 mysql on
#start MariaDB################################################
#/etc/init.d/mysql start
#设置mysql密码及相关设置########################################
mysql_secure_installation
#移动mysql配置文件
cp -p /etc/my.cnf /etc/my.cnf.bak
mv /etc/my.cnf /data/conf/
ln -s /data/conf/my.cnf /etc/
#移动mysql数据库
cp -rp /var/lib/mysql /var/lib/mysql-bak
mv /var/lib/mysql /data/
ln -s /data/mysql /var/lib/
# 添加防火墙规则
/sbin/iptables -I INPUT -p tcp –dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart
2) 从数据库M2服务器执行同样的操作。
备份其他服务器上的的数据库(锁表备份,并且记录偏移量):
#mysqldump -hlocalhost -uroot -p’密码’ –default-character-set=utf8 –all-databases –lock-all-tables –master-data=1 > /root/master20151016.sql
查看偏移量:
#head -n30 master20151016.sql
记录偏移量,用作数据库同步用:
CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000024′, MASTER_LOG_POS=60887976;
文件打包,下载到本地,然后再上传到主数据库M1。
主数据库M1上操作。
1.导入线上的数据库
mysql -u root -p < /root/master20151016.sql
2.新建同步用户yxkj_slave2。
用户名:yxkj_slave2
密码:123456
#mysql -u root -p
输入密码,之后操作:
MariaDB [(none)]> CREATE USER ‘yxkj_slave2’@’192.168.1.%’ IDENTIFIED BY ‘123456’; 【创建用户和密码】
MariaDB [(none)]> GRANT REPLICATION SLAVE , REPLICATION CLIENT ON * . * TO ‘yxkj_slave2’@’192.168.1.%’ IDENTIFIED BY ‘123456’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; 【给改用户的权限】
MariaDB [(none)]> flush PRIVILEGES; 【刷新权限】
添加一个远程登录root_login用户:
MariaDB [(none)]> CREATE USER ‘root_login’@’%’ IDENTIFIED BY ‘123456’;
MariaDB [(none)]> GRANT all privileges ON * . * TO ‘root_login’@’%’ IDENTIFIED BY ‘123456’;
MariaDB [(none)]> flush privileges;
3.修改mysql的配置文件:
vi /data/conf/my.cnf
写入一下配置:
port=61920 socket = /var/lib/mysql/mysql.sock skip-name-resolve expire_logs_days=10 slow-query-log=1 slow-query-log-file=/data/wwwroot/log/mysql/slowQuery.log long-query-time=1 log-slow-admin-statements skip-external-locking key_buffer_size = 100M max_allowed_packet = 1M table_open_cache = 1024 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size = 32M thread_concurrency = 2 log-bin=mysql-bin server-id = 1 # 需要记录二进制日志的数据库 #binlog-do-db=ucenter #binlog-do-db=dz binlog-do-db = funet8_com binlog-do-db = xiaotux_com binlog-do-db = test # 不需要记录二进制日志的数据库 #binlog-ignore-db=test binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-ignore-db=performance_schema # 需要同步的数据库 #replicate-do-db=ucenter #replicate-do-db=dz replicate-do-db=funet8_com replicate-do-db=xiaotux_com replicate-do-db=test # 忽略同步的数据库 replicate-ignore-db=mysql replicate-ignore-db=information_schema replicate-ignore-db=performance_schema
从数据库M2操作
#vi /data/conf/my.cnf
配置跟M1一样,只是
从数据库中改为:server-id = 100
[root@localhost ~]# mysql -u root -p
MariaDB [(none)]> stop slave;
MariaDB [(none)]> change master to master_host=’192.168.1.106′,master_user=’yxkj_slave2′,master_password=’123456′,master_port=61920,master_log_file=’mysql-bin.000003′,master_log_pos=326; 【需要修改漂移量】
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave statusG;
提示:Slave_IO_Running: Yes和Slave_SQL_Running: Yes 说明同步成功,再在phpmyadmin修改一条数据,看是否匹配
大家顶啊,这么好的文章,博主辛苦了