I've suffered from canker sores my entire childhood. As an adult I found out that toothpastes with Sodium Lauryl Sulfate can be a major aggravator/cause. First, I recommend finding a toothpaste without SLS. If you are in the UK, the Superdrug Just Toothpaste is great and only 35p! In the US, there is Biotene. It is expensive, but worth it.
When I do get one, I use a q-tip to apply a little tea tree oil to it and find it disappears in a couple of days.
Good luck!