mysql1和mysql分别上传源码包mysql-5.6.26.tar.gz,然后mysql1和mysql分别源码编译安装mysql:

cd

tar xf mysql-5.6.26.tar.gz -C /usr/local/src && cd /usr/local/src/mysql-5.6.26 && useradd -M -s /sbin/nologin mysql && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL-USER=mysql && make -j 8 && make install &&

cd && chown -R mysql:mysql /usr/local/mysql/

cp /etc/my.cnf /etc/my.cnf.bak

rm -fr /etc/my.cnf

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chkconfig mysqld on

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

ln -s /usr/local/mysql/bin/* /bin/

/etc/init.d/mysqld start

mysql_secure_installation

一、mysql主从配置:

1、主mysql

192.168.146.13 :

创建需要同步的数据库:

mysql>create database HA;

mysql>use HA;

mysql> create table test(id int,name char(20));

mysql> insert into test values(‘001’,’zhangsan’);

/etc/init.d/mysqld stop

vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

增加下面4行:

log-bin=mysql-bin-master# 启用二进制日志

server-id=1 #本机数据库ID 标示

binlog-do-db=HA #可以被从服务器复制的库。二进制需要同步的数据库名

binlog-ignore-db=mysql #不可以被从服务器复制的库

重启mysql:

/etc/init.d/mysqld restart

授权:

mysql>grant replication slave on . to [email protected] identified by "123456";

mysql>grant replication slave on . to slave@'%' identified by "123456"; 授权给任何ip可以来同步。

查看状态信息:

mysql> show master status;

mysql-master-bin.000001

查看二进制日志:

ls /usr/local/mysql/data/

mysql> show binlog events\G

复制前要保证同步的数据库一致,导出数据库

mysqldump -uroot -p123456 HA >HA.sql #导出数据库

将导出的数据库传给从服务器

方法一:scp HA.sql [email protected]:/root

或者

记得清空两台服务器的iptables,要不然端口不能通信

iptables –F

/etc/init.d/iptables stop

chkconfig iptables off

mysql2:

两台数据库服务器mysql版本要一致

mysql> show variables like '%version%';

2、从mysql

192.168.146.14 :

修改从服务器配置文件:

从服务器没必要开启bin-log日志

vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

增加下面1行:

server-id= 2 #从服务器ID号,不要和主ID相同 ,如果设置多个从服务器,每个从服务器必须有一个唯一的server-id值,必须与主服务器的以及其它从服务器的不相同。可以认为server-id值类似于IP地址:这些ID值能唯一识别复制服务器群集中的每个服务器实

/etc/init.d/mysqld restart

测试连接到主服务器是否成功

mysql -uslave -p123456 -h 192.168.146.13

导入数据库,和主数据库服务器保持一致

msyql -uroot -p123456

mysql> create database HA;

mysql > use HA;

mysql > source HA < HA.sql

或者:

mysql -uroot -p123456 HA < HA.sql

mysql> change master to master_host='192.168.146.13',master_user='slave',master_password='123456';

mysql> start slave;

mysql>show slave status\G 查看状态

出现2个yes即为正常

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

做完以上步骤就是msyql主从配置,如果要部署成msyql主-主配置需继续如下配置:

二、mysql主主配置:

1、mysql2从

192.168.146.14:

vim /etc/my.cnf

增加 log-bin=mysql-bin-master# 启用二进制日志

  server-id= 2   

增加 binlog-do-db=HA #可以被从服务器复制的库。二进制需要同步的数据库名

增加 binlog-ignore-db=mysql #不可以被从服务器复制的库

/etc/init.d/mysqld restart

授权:

mysql>grant replication slave on . to [email protected] identified by "123456";

回到mysql1:

mysql> change master to master_host='192. 168.146.14',master_user='slave',master_password='123456';

三、重新同步所有数据:

mysql> stop slave;

mysql>drop database test;

回到主mysql:

mysqldump -uroot -p123456 HA >HA.sql #导出数据库

scp HA.sql [email protected]:/root

回到从mysql:

mysql -uroot -p123456 HA < HA.sql

mysql -uroot -p

mysql> stop slave;

mysql> change master to master_host='192.168.146.13',master_user='slave',master_password='123456';

mysql> start slave;

mysql>show slave status\G 查看状态

四、重新同步某个节点的数据:

主msyql:

mysql> show master status;

记录下 master_log_file='mysql-bin-master.000004' 和 master_log_pos=360

从mysql:

mysql> stop slave;

mysql> drop database test;

mysql> change master to master_host='192.168.146.13',master_user='slave',master_password='123456',master_log_file='mysql-bin-master.000004',master_log_pos=360;

mysql> start slave;
五、master挂了,如何提升slave为master


注意事项
1、默认mysq主从只能是master向slave同步数据,除非是主主或者是cluster才可以互相同步数据,当然可以配合keepalived或者mha进行vip的高可用
2、建议主从,或者主主的时候把另一台主设置为只读,防止数据不一致的情况发生。
查看数据库是否只读:show global variables like '%only%';
设置只读:set global read_only=1;