Query: DROP TABLE IF EXISTS `test_replication` /* generated by server */
```
## Canal
Canal is a package that can sync your MySQL into everywhere, like Redis, Elasticsearch.
First, canal will dump your MySQL data then sync changed data using binlog incrementally.
You must use ROW format for binlog, full binlog row image is preferred, because we may meet some errors when primary key changed in update for minimal or noblob row image.
//Becuase empty handler does nothing, so here the MySQL client can only connect the proxy server. :-)
```
## Failover
Failover supports to promote a new master and let other slaves replicate from it automatically when the old master was down.
Failover supports MySQL >= 5.6.9 with GTID mode, if you use lower version, e.g, MySQL 5.0 - 5.5, please use [MHA](http://code.google.com/p/mysql-master-ha/) or [orchestrator](https://github.com/outbrain/orchestrator).
At the same time, Failover supports MariaDB >= 10.0.9 with GTID mode too.
Why only GTID? Supporting failover with no GTID mode is very hard, because slave can not find the proper binlog filename and position with the new master.
Although there are many companies use MySQL 5.0 - 5.5, I think upgrade MySQL to 5.6 or higher is easy.
## Driver
Driver is the package that you can use go-mysql with go database/sql like other drivers. A simple example:
```
import (
"database/sql"
- "github.com/siddontang/go-mysql/driver"
)
func main() {
// dsn format: "user:password@addr?dbname"
dsn := "root@127.0.0.1:3306?test"
db, _ := sql.Open(dsn)
db.Close()
}
```
We pass all tests in https://github.com/bradfitz/go-sql-test using go-mysql driver. :-)